Prevent an illegal memory access in gprof by ensuring that string tables for aout...
[deliverable/binutils-gdb.git] / bfd / elf32-arm.c
index 0b250cea270bcbf9e823c29ab0ad7a0de498ce76..ce9c2f29bf82b680fea7281ffb723a1c04bd5d0c 100644 (file)
@@ -56,7 +56,7 @@
    ? bfd_elf32_swap_reloc_out \
    : bfd_elf32_swap_reloca_out)
 
-#define elf_info_to_howto              0
+#define elf_info_to_howto              NULL
 #define elf_info_to_howto_rel          elf32_arm_info_to_howto
 
 #define ARM_ELF_ABI_VERSION            0
@@ -1839,14 +1839,22 @@ elf32_arm_howto_from_type (unsigned int r_type)
   return NULL;
 }
 
-static void
-elf32_arm_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED, arelent * bfd_reloc,
+static bfd_boolean
+elf32_arm_info_to_howto (bfd * abfd, arelent * bfd_reloc,
                         Elf_Internal_Rela * elf_reloc)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (elf_reloc->r_info);
-  bfd_reloc->howto = elf32_arm_howto_from_type (r_type);
+  if ((bfd_reloc->howto = elf32_arm_howto_from_type (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 TRUE;
 }
 
 struct elf32_arm_reloc_map
@@ -3142,7 +3150,7 @@ struct elf32_arm_link_hash_table
   int nacl_p;
 
   /* True if the target uses REL relocations.  */
-  int use_rel;
+  bfd_boolean use_rel;
 
   /* Nonzero if import library must be a secure gateway import library
      as per ARMv8-M Security Extensions.  */
@@ -3796,7 +3804,7 @@ elf32_arm_link_hash_table_create (bfd *abfd)
   ret->plt_header_size = 20;
   ret->plt_entry_size = elf32_arm_use_long_plt_entry ? 16 : 12;
 #endif
-  ret->use_rel = 1;
+  ret->use_rel = TRUE;
   ret->obfd = abfd;
 
   if (!bfd_hash_table_init (&ret->stub_hash_table, stub_hash_newfunc,
@@ -4019,10 +4027,10 @@ arm_type_of_stub (struct bfd_link_info *info,
                {
                  if (input_sec->flags & SEC_ELF_PURECODE)
                    _bfd_error_handler
-                     (_("%B(%A): warning: long branch veneers used in"
+                     (_("%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."),
+                        " targets that implement the movw instruction"),
                       input_bfd, input_sec);
 
                  stub_type = (bfd_link_pic (info) | globals->pic_veneer)
@@ -4053,10 +4061,10 @@ arm_type_of_stub (struct bfd_link_info *info,
                    {
                      if (input_sec->flags & SEC_ELF_PURECODE)
                        _bfd_error_handler
-                         (_("%B(%A): warning: long branch veneers used in"
+                         (_("%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."),
+                            " targets that implement the movw instruction"),
                           input_bfd, input_sec);
 
                      stub_type = (bfd_link_pic (info) | globals->pic_veneer)
@@ -4072,10 +4080,10 @@ arm_type_of_stub (struct bfd_link_info *info,
            {
              if (input_sec->flags & SEC_ELF_PURECODE)
                _bfd_error_handler
-                 (_("%B(%A): warning: long branch veneers used in"
+                 (_("%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."),
+                    " targets that implement the movw instruction"),
                   input_bfd, input_sec);
 
              /* Thumb to arm.  */
@@ -4084,9 +4092,9 @@ arm_type_of_stub (struct bfd_link_info *info,
                  && !INTERWORK_FLAG (sym_sec->owner))
                {
                  _bfd_error_handler
-                   (_("%B(%s): warning: interworking not enabled.\n"
-                      "  first occurrence: %B: Thumb call to ARM"),
-                    sym_sec->owner, name, input_bfd);
+                   (_("%pB(%s): warning: interworking not enabled;"
+                      " first occurrence: %pB: %s call to %s"),
+                    sym_sec->owner, name, input_bfd, "Thumb", "ARM");
                }
 
              stub_type =
@@ -4124,10 +4132,10 @@ arm_type_of_stub (struct bfd_link_info *info,
     {
       if (input_sec->flags & SEC_ELF_PURECODE)
        _bfd_error_handler
-         (_("%B(%A): warning: long branch veneers used in"
+         (_("%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."),
+            " targets that implement the movw instruction"),
           input_bfd, input_sec);
       if (branch_type == ST_BRANCH_TO_THUMB)
        {
@@ -4138,9 +4146,9 @@ arm_type_of_stub (struct bfd_link_info *info,
              && !INTERWORK_FLAG (sym_sec->owner))
            {
              _bfd_error_handler
-               (_("%B(%s): warning: interworking not enabled.\n"
-                  "  first occurrence: %B: ARM call to Thumb"),
-                sym_sec->owner, name, input_bfd);
+               (_("%pB(%s): warning: interworking not enabled;"
+                  " first occurrence: %pB: %s call to %s"),
+                sym_sec->owner, name, input_bfd, "ARM", "Thumb");
            }
 
          /* We have an extra 2-bytes reach because of
@@ -4412,7 +4420,7 @@ elf32_arm_create_or_find_stub_sec (asection **link_sec_p, asection *section,
       out_sec = bfd_get_section_by_name (output_bfd, out_sec_name);
       if (out_sec == NULL)
        {
-         _bfd_error_handler (_("No address assigned to the veneers output "
+         _bfd_error_handler (_("no address assigned to the veneers output "
                                "section %s"), out_sec_name);
          return NULL;
        }
@@ -4487,7 +4495,7 @@ elf32_arm_add_stub (const char *stub_name, asection *section,
     {
       if (section == NULL)
        section = stub_sec;
-      _bfd_error_handler (_("%B: cannot create stub entry %s"),
+      _bfd_error_handler (_("%pB: cannot create stub entry %s"),
                          section->owner, stub_name);
       return NULL;
     }
@@ -5672,8 +5680,8 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
 
       if (!is_v8m)
        {
-         _bfd_error_handler (_("%B: Special symbol `%s' only allowed for "
-                               "ARMv8-M architecture or later."),
+         _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;
@@ -5681,10 +5689,9 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
 
       if (cmse_invalid)
        {
-         _bfd_error_handler (_("%B: invalid special symbol `%s'."),
+         _bfd_error_handler (_("%pB: invalid special symbol `%s'; it must be"
+                               " a global or weak function symbol"),
                              input_bfd, sym_name);
-         _bfd_error_handler (_("It must be a global or weak function "
-                               "symbol."));
          ret = FALSE;
          if (i < ext_start)
            continue;
@@ -5721,13 +5728,13 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
          if (hash || j < ext_start)
            {
              _bfd_error_handler
-               (_("%B: invalid standard symbol `%s'."), input_bfd, sym_name);
-             _bfd_error_handler
-               (_("It must be a global or weak function symbol."));
+               (_("%pB: invalid standard symbol `%s'; it must be "
+                  "a global or weak function symbol"),
+                input_bfd, sym_name);
            }
          else
            _bfd_error_handler
-             (_("%B: absent standard symbol `%s'."), input_bfd, sym_name);
+             (_("%pB: absent standard symbol `%s'"), input_bfd, sym_name);
          ret = FALSE;
          if (!hash)
            continue;
@@ -5739,7 +5746,7 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
       if (cmse_hash->root.root.u.def.section != section)
        {
          _bfd_error_handler
-           (_("%B: `%s' and its special symbol are in different sections."),
+           (_("%pB: `%s' and its special symbol are in different sections"),
             input_bfd, sym_name);
          ret = FALSE;
        }
@@ -5751,14 +5758,14 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
       if (section->output_section == NULL)
        {
          _bfd_error_handler
-           (_("%B: entry function `%s' not output."), input_bfd, sym_name);
+           (_("%pB: entry function `%s' not output"), input_bfd, sym_name);
          continue;
        }
 
       if (hash->root.size == 0)
        {
          _bfd_error_handler
-           (_("%B: entry function `%s' is empty."), input_bfd, sym_name);
+           (_("%pB: entry function `%s' is empty"), input_bfd, sym_name);
          ret = FALSE;
        }
 
@@ -5887,8 +5894,8 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
   in_implib_bfd = htab->in_implib_bfd;
   if (!htab->cmse_implib)
     {
-      _bfd_error_handler (_("%B: --in-implib only supported for Secure "
-                           "Gateway import libraries."), in_implib_bfd);
+      _bfd_error_handler (_("%pB: --in-implib only supported for Secure "
+                           "Gateway import libraries"), in_implib_bfd);
       return FALSE;
     }
 
@@ -5933,10 +5940,10 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
          || (ARM_GET_SYM_BRANCH_TYPE (intsym->st_target_internal)
              != ST_BRANCH_TO_THUMB))
        {
-         _bfd_error_handler (_("%B: invalid import library entry: `%s'."),
+         _bfd_error_handler (_("%pB: invalid import library entry: `%s'; "
+                               "symbol should be absolute, global and "
+                               "refer to Thumb functions"),
                              in_implib_bfd, sym_name);
-         _bfd_error_handler (_("Symbol should be absolute, global and "
-                               "refer to Thumb functions."));
          ret = FALSE;
          continue;
        }
@@ -5955,7 +5962,7 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
          bfd_boolean new_stub;
 
          _bfd_error_handler
-           (_("Entry function `%s' disappeared from secure code."), sym_name);
+           (_("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);
          stub_entry
@@ -5979,7 +5986,7 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
        {
          if (!cmse_entry_fct_p (hash))
            {
-             _bfd_error_handler (_("`%s' refers to a non entry function."),
+             _bfd_error_handler (_("`%s' refers to a non entry function"),
                                  sym_name);
              ret = FALSE;
            }
@@ -5994,7 +6001,7 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
          if (!!(flags & BSF_GLOBAL)
              != (hash->root.root.type == bfd_link_hash_defined))
            _bfd_error_handler
-             (_("%B: visibility of symbol `%s' has changed."), in_implib_bfd,
+             (_("%pB: visibility of symbol `%s' has changed"), in_implib_bfd,
               sym_name);
 
          stub_entry->stub_offset = stub_offset;
@@ -6003,7 +6010,7 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
       /* Size should match that of a SG veneer.  */
       if (intsym->st_size != cmse_stub_size)
        {
-         _bfd_error_handler (_("%B: incorrect size for symbol `%s'."),
+         _bfd_error_handler (_("%pB: incorrect size for symbol `%s'"),
                              in_implib_bfd, sym_name);
          ret = FALSE;
        }
@@ -6022,8 +6029,8 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
       if (stub_offset % cmse_stub_size)
        {
          _bfd_error_handler
-           (_("Offset of veneer for entry function `%s' not a multiple of "
-              "its size."), sym_name);
+           (_("offset of veneer for entry function `%s' not a multiple of "
+              "its size"), sym_name);
          ret = FALSE;
        }
 
@@ -6050,7 +6057,7 @@ set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
   if (cmse_stub_array_start != cmse_stub_sec_vma)
     {
       _bfd_error_handler
-       (_("Start address of `%s' is different from previous link."),
+       (_("start address of `%s' is different from previous link"),
         out_sec_name);
       ret = FALSE;
     }
@@ -6624,7 +6631,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
                                             TRUE, FALSE);
          if (stub_entry == NULL)
            {
-             _bfd_error_handler (_("%B: cannot create stub entry %s"),
+             _bfd_error_handler (_("%pB: cannot create stub entry %s"),
                                  section->owner, stub_name);
              return FALSE;
            }
@@ -6757,8 +6764,8 @@ find_thumb_glue (struct bfd_link_info *link_info,
     (&(hash_table)->root, tmp_name, FALSE, FALSE, TRUE);
 
   if (hash == NULL
-      && asprintf (error_message, _("unable to find THUMB glue '%s' for '%s'"),
-                  tmp_name, name) == -1)
+      && 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);
 
   free (tmp_name);
@@ -6793,8 +6800,8 @@ find_arm_glue (struct bfd_link_info *link_info,
     (&(hash_table)->root, tmp_name, FALSE, FALSE, TRUE);
 
   if (myh == NULL
-      && asprintf (error_message, _("unable to find ARM glue '%s' for '%s'"),
-                  tmp_name, name) == -1)
+      && 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);
 
   free (tmp_name);
@@ -7508,7 +7515,7 @@ bfd_elf32_arm_process_before_allocation (bfd *abfd,
 
   if (globals->byteswap_code && !bfd_big_endian (abfd))
     {
-      _bfd_error_handler (_("%B: BE8 images only valid in big-endian mode."),
+      _bfd_error_handler (_("%pB: BE8 images only valid in big-endian mode"),
                          abfd);
       return FALSE;
     }
@@ -7739,7 +7746,7 @@ bfd_elf32_arm_set_vfp11_fix (bfd *obfd, struct bfd_link_info *link_info)
 
        default:
          /* Give a warning, but do as the user requests anyway.  */
-         _bfd_error_handler (_("%B: warning: selected VFP11 erratum "
+         _bfd_error_handler (_("%pB: warning: selected VFP11 erratum "
            "workaround is not necessary for target architecture"), obfd);
        }
     }
@@ -7766,7 +7773,7 @@ bfd_elf32_arm_set_stm32l4xx_fix (bfd *obfd, struct bfd_link_info *link_info)
       if (globals->stm32l4xx_fix != BFD_ARM_STM32L4XX_FIX_NONE)
        /* Give a warning, but do as the user requests anyway.  */
        _bfd_error_handler
-         (_("%B: warning: selected STM32L4XX erratum "
+         (_("%pB: warning: selected STM32L4XX erratum "
             "workaround is not necessary for target architecture"), obfd);
     }
 }
@@ -8303,8 +8310,8 @@ bfd_elf32_arm_vfp11_fix_veneer_locations (bfd *abfd,
                (&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
 
              if (myh == NULL)
-               _bfd_error_handler (_("%B: unable to find VFP11 veneer "
-                                     "`%s'"), abfd, tmp_name);
+               _bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
+                                   abfd, "VFP11", tmp_name);
 
              vma = myh->root.u.def.section->output_section->vma
                    + myh->root.u.def.section->output_offset
@@ -8323,8 +8330,8 @@ bfd_elf32_arm_vfp11_fix_veneer_locations (bfd *abfd,
                (&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
 
              if (myh == NULL)
-               _bfd_error_handler (_("%B: unable to find VFP11 veneer "
-                                     "`%s'"), abfd, tmp_name);
+               _bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
+                                   abfd, "VFP11", tmp_name);
 
              vma = myh->root.u.def.section->output_section->vma
                    + myh->root.u.def.section->output_offset
@@ -8389,8 +8396,8 @@ bfd_elf32_arm_stm32l4xx_fix_veneer_locations (bfd *abfd,
                (&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
 
              if (myh == NULL)
-               _bfd_error_handler (_("%B: unable to find STM32L4XX veneer "
-                                     "`%s'"), abfd, tmp_name);
+               _bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
+                                   abfd, "STM32L4XX", tmp_name);
 
              vma = myh->root.u.def.section->output_section->vma
                + myh->root.u.def.section->output_offset
@@ -8408,8 +8415,8 @@ bfd_elf32_arm_stm32l4xx_fix_veneer_locations (bfd *abfd,
                (&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
 
              if (myh == NULL)
-               _bfd_error_handler (_("%B: unable to find STM32L4XX veneer "
-                                     "`%s'"), abfd, tmp_name);
+               _bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
+                                   abfd, "STM32L4XX", tmp_name);
 
              vma = myh->root.u.def.section->output_section->vma
                + myh->root.u.def.section->output_offset
@@ -8615,11 +8622,11 @@ bfd_elf32_arm_stm32l4xx_erratum_scan (bfd *abfd,
                          {
                            _bfd_error_handler
                              /* xgettext:c-format */
-                             (_("%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"),
+                             (_("%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"),
                               abfd, sec, i);
                          }
                        else
@@ -8713,7 +8720,7 @@ bfd_elf32_arm_set_target_params (struct bfd *output_bfd,
     globals->target2_reloc = R_ARM_GOT_PREL;
   else
     {
-      _bfd_error_handler (_("Invalid TARGET2 relocation type '%s'."),
+      _bfd_error_handler (_("invalid TARGET2 relocation type '%s'"),
                          params->target2_type);
     }
   globals->fix_v4bx = params->fix_v4bx;
@@ -8803,9 +8810,9 @@ elf32_thumb_to_arm_stub (struct bfd_link_info * info,
          && !INTERWORK_FLAG (sym_sec->owner))
        {
          _bfd_error_handler
-           (_("%B(%s): warning: interworking not enabled.\n"
-              "  first occurrence: %B: Thumb call to ARM"),
-            sym_sec->owner, name, input_bfd);
+           (_("%pB(%s): warning: interworking not enabled;"
+              " first occurrence: %pB: %s call to %s"),
+            sym_sec->owner, name, input_bfd, "Thumb", "ARM");
 
          return FALSE;
        }
@@ -8893,9 +8900,9 @@ elf32_arm_create_thumb_stub (struct bfd_link_info * info,
          && !INTERWORK_FLAG (sym_sec->owner))
        {
          _bfd_error_handler
-           (_("%B(%s): warning: interworking not enabled.\n"
-              "  first occurrence: %B: arm call to thumb"),
-            sym_sec->owner, name, input_bfd);
+           (_("%pB(%s): warning: interworking not enabled;"
+              " first occurrence: %pB: %s call to %s"),
+            sym_sec->owner, name, input_bfd, "ARM", "Thumb");
        }
 
       --my_offset;
@@ -9455,7 +9462,7 @@ elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
            {
              /* FIXME: We ought to be able to generate thumb-1 PLT
                 instructions...  */
-             _bfd_error_handler (_("%B: Warning: thumb-1 mode PLT generation not currently supported"),
+             _bfd_error_handler (_("%pB: warning: thumb-1 mode PLT generation not currently supported"),
                                  output_bfd);
              return FALSE;
            }
@@ -9720,8 +9727,10 @@ elf32_arm_tls_relax (struct elf32_arm_link_hash_table *globals,
              | bfd_get_16 (input_bfd, contents + rel->r_offset + 2);
          _bfd_error_handler
            /* xgettext:c-format */
-           (_("%B(%A+%#Lx): unexpected Thumb instruction '%#lx' in TLS trampoline"),
-            input_bfd, input_sec, rel->r_offset, insn);
+           (_("%pB(%pA+%#" PRIx64 "): "
+              "unexpected %s instruction '%#lx' in TLS trampoline"),
+            input_bfd, input_sec, (uint64_t) rel->r_offset,
+            "Thumb", insn);
          return bfd_reloc_notsupported;
        }
       break;
@@ -9760,8 +9769,10 @@ elf32_arm_tls_relax (struct elf32_arm_link_hash_table *globals,
        {
          _bfd_error_handler
            /* xgettext:c-format */
-           (_("%B(%A+%#Lx): unexpected ARM instruction '%#lx' in TLS trampoline"),
-            input_bfd, input_sec, rel->r_offset, insn);
+           (_("%pB(%pA+%#" PRIx64 "): "
+              "unexpected %s instruction '%#lx' in TLS trampoline"),
+            input_bfd, input_sec, (uint64_t) rel->r_offset,
+            "ARM", insn);
          return bfd_reloc_notsupported;
        }
       break;
@@ -10106,7 +10117,7 @@ elf32_arm_final_link_relocate (reloc_howto_type *           howto,
                v = _("PIE executable");
 
              _bfd_error_handler
-               (_("%B: relocation %s against external or undefined symbol `%s'"
+               (_("%pB: relocation %s against external or undefined symbol `%s'"
                   " can not be used when making a %s; recompile with -fPIC"), input_bfd,
                 elf32_arm_howto_table_1[r_type].name, h->root.root.string, v);
              return bfd_reloc_notsupported;
@@ -10237,9 +10248,10 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
                 instruction instead ?  */
              if (branch_type != ST_BRANCH_TO_THUMB)
                _bfd_error_handler
-                 (_("\%B: Warning: Arm BLX instruction targets Arm function '%s'."),
-                  input_bfd,
-                  h ? h->root.root.string : "(local)");
+                 (_("\%pB: warning: %s BLX instruction targets"
+                    " %s function '%s'"),
+                  input_bfd, "ARM",
+                  "ARM", h ? h->root.root.string : "(local)");
            }
          else if (r_type == R_ARM_PC24)
            {
@@ -10663,9 +10675,10 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
               instruction instead ?  */
            if (branch_type == ST_BRANCH_TO_THUMB)
              _bfd_error_handler
-               (_("%B: Warning: Thumb BLX instruction targets thumb function '%s'."),
-                input_bfd,
-                h ? h->root.root.string : "(local)");
+               (_("%pB: warning: %s BLX instruction targets"
+                  " %s function '%s'"),
+                input_bfd, "Thumb",
+                "Thumb", h ? h->root.root.string : "(local)");
          }
        else
          {
@@ -11531,8 +11544,11 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
                  {
                    _bfd_error_handler
                      /* xgettext:c-format */
-                     (_("%B(%A+%#Lx): unexpected Thumb instruction '%#lx' referenced by TLS_GOTDESC"),
-                      input_bfd, input_section, rel->r_offset, insn);
+                     (_("%pB(%pA+%#" PRIx64 "): "
+                        "unexpected %s instruction '%#lx' "
+                        "referenced by TLS_GOTDESC"),
+                      input_bfd, input_section, (uint64_t) rel->r_offset,
+                      "Thumb", insn);
                    return bfd_reloc_notsupported;
                  }
              }
@@ -11554,8 +11570,11 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
                  default:
                    _bfd_error_handler
                      /* xgettext:c-format */
-                     (_("%B(%A+%#Lx): unexpected ARM instruction '%#lx' referenced by TLS_GOTDESC"),
-                      input_bfd, input_section, rel->r_offset, insn);
+                     (_("%pB(%pA+%#" PRIx64 "): "
+                        "unexpected %s instruction '%#lx' "
+                        "referenced by TLS_GOTDESC"),
+                      input_bfd, input_section, (uint64_t) rel->r_offset,
+                      "ARM", insn);
                    return bfd_reloc_notsupported;
                  }
              }
@@ -11583,8 +11602,9 @@ elf32_arm_final_link_relocate (reloc_howto_type *           howto,
        {
          _bfd_error_handler
            /* xgettext:c-format */
-           (_("%B(%A+%#Lx): %s relocation not permitted in shared object"),
-            input_bfd, input_section, rel->r_offset, howto->name);
+           (_("%pB(%pA+%#" PRIx64 "): %s relocation not permitted "
+              "in shared object"),
+            input_bfd, input_section, (uint64_t) rel->r_offset, howto->name);
          return bfd_reloc_notsupported;
        }
       else
@@ -11796,8 +11816,9 @@ elf32_arm_final_link_relocate (reloc_howto_type *           howto,
              {
                _bfd_error_handler
                  /* xgettext:c-format */
-                 (_("%B(%A+%#Lx): Only ADD or SUB instructions are allowed for ALU group relocations"),
-                 input_bfd, input_section, rel->r_offset);
+                 (_("%pB(%pA+%#" PRIx64 "): only ADD or SUB instructions "
+                    "are allowed for ALU group relocations"),
+                 input_bfd, input_section, (uint64_t) rel->r_offset);
                return bfd_reloc_overflow;
              }
 
@@ -11836,9 +11857,11 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
          {
            _bfd_error_handler
              /* xgettext:c-format */
-             (_("%B(%A+%#Lx): Overflow whilst splitting %#Lx for group relocation %s"),
-              input_bfd, input_section, rel->r_offset,
-              signed_value < 0 ? -signed_value : signed_value, howto->name);
+             (_("%pB(%pA+%#" PRIx64 "): overflow whilst "
+                "splitting %#" PRIx64 " for group relocation %s"),
+              input_bfd, input_section, (uint64_t) rel->r_offset,
+              (uint64_t) (signed_value < 0 ? -signed_value : signed_value),
+              howto->name);
            return bfd_reloc_overflow;
          }
 
@@ -11926,9 +11949,11 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
          {
            _bfd_error_handler
              /* xgettext:c-format */
-             (_("%B(%A+%#Lx): Overflow whilst splitting %#Lx for group relocation %s"),
-              input_bfd, input_section, rel->r_offset,
-              signed_value < 0 ? -signed_value : signed_value, howto->name);
+             (_("%pB(%pA+%#" PRIx64 "): overflow whilst "
+                "splitting %#" PRIx64 " for group relocation %s"),
+              input_bfd, input_section, (uint64_t) rel->r_offset,
+              (uint64_t) (signed_value < 0 ? -signed_value : signed_value),
+              howto->name);
            return bfd_reloc_overflow;
          }
 
@@ -12012,9 +12037,11 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
          {
            _bfd_error_handler
              /* xgettext:c-format */
-             (_("%B(%A+%#Lx): Overflow whilst splitting %#Lx for group relocation %s"),
-              input_bfd, input_section, rel->r_offset,
-              signed_value < 0 ? -signed_value : signed_value, howto->name);
+             (_("%pB(%pA+%#" PRIx64 "): overflow whilst "
+                "splitting %#" PRIx64 " for group relocation %s"),
+              input_bfd, input_section, (uint64_t) rel->r_offset,
+              (uint64_t) (signed_value < 0 ? -signed_value : signed_value),
+              howto->name);
            return bfd_reloc_overflow;
          }
 
@@ -12100,9 +12127,11 @@ elf32_arm_final_link_relocate (reloc_howto_type *          howto,
          {
            _bfd_error_handler
              /* xgettext:c-format */
-             (_("%B(%A+%#Lx): Overflow whilst splitting %#Lx for group relocation %s"),
-              input_bfd, input_section, rel->r_offset,
-              signed_value < 0 ? -signed_value : signed_value, howto->name);
+             (_("%pB(%pA+%#" PRIx64 "): overflow whilst "
+                "splitting %#" PRIx64 " for group relocation %s"),
+              input_bfd, input_section, (uint64_t) rel->r_offset,
+              (uint64_t) (signed_value < 0 ? -signed_value : signed_value),
+              howto->name);
            return bfd_reloc_overflow;
          }
 
@@ -12366,9 +12395,10 @@ elf32_arm_relocate_section (bfd *                 output_bfd,
                        {
                          _bfd_error_handler
                            /* xgettext:c-format */
-                           (_("%B(%A+%#Lx): %s relocation against SEC_MERGE section"),
+                           (_("%pB(%pA+%#" PRIx64 "): "
+                              "%s relocation against SEC_MERGE section"),
                             input_bfd, input_section,
-                            rel->r_offset, howto->name);
+                            (uint64_t) rel->r_offset, howto->name);
                          return FALSE;
                        }
 
@@ -12478,12 +12508,12 @@ elf32_arm_relocate_section (bfd *                output_bfd,
          _bfd_error_handler
            ((sym_type == STT_TLS
              /* xgettext:c-format */
-             ? _("%B(%A+%#Lx): %s used with TLS symbol %s")
+             ? _("%pB(%pA+%#" PRIx64 "): %s used with TLS symbol %s")
              /* xgettext:c-format */
-             : _("%B(%A+%#Lx): %s used with non-TLS symbol %s")),
+             : _("%pB(%pA+%#" PRIx64 "): %s used with non-TLS symbol %s")),
             input_bfd,
             input_section,
-            rel->r_offset,
+            (uint64_t) rel->r_offset,
             howto->name,
             name);
        }
@@ -12533,10 +12563,11 @@ elf32_arm_relocate_section (bfd *                output_bfd,
        {
          _bfd_error_handler
            /* xgettext:c-format */
-           (_("%B(%A+%#Lx): unresolvable %s relocation against symbol `%s'"),
+           (_("%pB(%pA+%#" PRIx64 "): "
+              "unresolvable %s relocation against symbol `%s'"),
             input_bfd,
             input_section,
-            rel->r_offset,
+            (uint64_t) rel->r_offset,
             howto->name,
             h->root.root.string);
          return FALSE;
@@ -13018,11 +13049,11 @@ elf32_arm_set_private_flags (bfd *abfd, flagword flags)
        {
          if (flags & EF_ARM_INTERWORK)
            _bfd_error_handler
-             (_("Warning: Not setting interworking flag of %B since it has already been specified as non-interworking"),
+             (_("warning: not setting interworking flag of %pB since it has already been specified as non-interworking"),
               abfd);
          else
            _bfd_error_handler
-             (_("Warning: Clearing the interworking flag of %B due to outside request"),
+             (_("warning: clearing the interworking flag of %pB due to outside request"),
               abfd);
        }
     }
@@ -13067,7 +13098,7 @@ elf32_arm_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
        {
          if (out_flags & EF_ARM_INTERWORK)
            _bfd_error_handler
-             (_("Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it"),
+             (_("warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"),
               obfd, ibfd);
 
          in_flags &= ~EF_ARM_INTERWORK;
@@ -13154,7 +13185,7 @@ elf32_arm_obj_attrs_handle_unknown (bfd *abfd, int tag)
   if ((tag & 127) < 64)
     {
       _bfd_error_handler
-       (_("%B: Unknown mandatory EABI object attribute %d"),
+       (_("%pB: unknown mandatory EABI object attribute %d"),
         abfd, tag);
       bfd_set_error (bfd_error_bad_value);
       return FALSE;
@@ -13162,7 +13193,7 @@ elf32_arm_obj_attrs_handle_unknown (bfd *abfd, int tag)
   else
     {
       _bfd_error_handler
-       (_("Warning: %B: Unknown EABI object attribute %d"),
+       (_("warning: %pB: unknown EABI object attribute %d"),
         abfd, tag);
       return TRUE;
     }
@@ -13429,7 +13460,7 @@ tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
 
   if (oldtag > MAX_TAG_CPU_ARCH || newtag > MAX_TAG_CPU_ARCH)
     {
-      _bfd_error_handler (_("error: %B: Unknown CPU architecture"), ibfd);
+      _bfd_error_handler (_("error: %pB: unknown CPU architecture"), ibfd);
       return -1;
     }
 
@@ -13467,7 +13498,7 @@ tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
 
   if (result == -1)
     {
-      _bfd_error_handler (_("error: %B: Conflicting CPU architectures %d/%d"),
+      _bfd_error_handler (_("error: %pB: conflicting CPU architectures %d/%d"),
                          ibfd, oldtag, newtag);
       return -1;
     }
@@ -13564,7 +13595,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
                != out_attr[Tag_MPextension_use].i)
            {
              _bfd_error_handler
-               (_("Error: %B has both the current and legacy "
+               (_("Error: %pB has both the current and legacy "
                   "Tag_MPextension_use attributes"), ibfd);
              result = FALSE;
            }
@@ -13593,7 +13624,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
               && in_attr[Tag_ABI_VFP_args].i != AEABI_VFP_args_compatible)
        {
          _bfd_error_handler
-           (_("error: %B uses VFP register arguments, %B does not"),
+           (_("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;
@@ -13722,7 +13753,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
                 binaries in the toolchain have had the attributes set
                 properly.
              _bfd_error_handler
-               (_("error: %B: 8-byte data alignment conflicts with %B"),
+               (_("error: %pB: 8-byte data alignment conflicts with %pB"),
                 obfd, ibfd);
              result = FALSE; */
            }
@@ -13751,8 +13782,8 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              else
                {
                  _bfd_error_handler
-                   (_("error: %B: unable to merge virtualization attributes "
-                      "with %B"),
+                   (_("error: %pB: unable to merge virtualization attributes "
+                      "with %pB"),
                     obfd, ibfd);
                  result = FALSE;
                }
@@ -13777,7 +13808,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              else
                {
                  _bfd_error_handler
-                   (_("error: %B: Conflicting architecture profiles %c/%c"),
+                   (_("error: %pB: conflicting architecture profiles %c/%c"),
                     ibfd,
                     in_attr[i].i ? in_attr[i].i : '0',
                     out_attr[i].i ? out_attr[i].i : '0');
@@ -13916,7 +13947,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              /* It's sometimes ok to mix different configs, so this is only
                 a warning.  */
              _bfd_error_handler
-               (_("Warning: %B: Conflicting platform configuration"), ibfd);
+               (_("warning: %pB: conflicting platform configuration"), ibfd);
            }
          break;
        case Tag_ABI_PCS_R9_use:
@@ -13925,7 +13956,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              && in_attr[i].i != AEABI_R9_unused)
            {
              _bfd_error_handler
-               (_("error: %B: Conflicting use of R9"), ibfd);
+               (_("error: %pB: conflicting use of R9"), ibfd);
              result = FALSE;
            }
          if (out_attr[i].i == AEABI_R9_unused)
@@ -13937,7 +13968,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              && out_attr[Tag_ABI_PCS_R9_use].i != AEABI_R9_unused)
            {
              _bfd_error_handler
-               (_("error: %B: SB relative addressing conflicts with use of R9"),
+               (_("error: %pB: SB relative addressing conflicts with use of R9"),
                 ibfd);
              result = FALSE;
            }
@@ -13950,7 +13981,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              && !elf_arm_tdata (obfd)->no_wchar_size_warning)
            {
              _bfd_error_handler
-               (_("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"),
+               (_("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"),
                 ibfd, in_attr[i].i, out_attr[i].i);
            }
          else if (in_attr[i].i && !out_attr[i].i)
@@ -13981,7 +14012,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
                    ? aeabi_enum_names[out_attr[i].i]
                    : "<unknown>";
                  _bfd_error_handler
-                   (_("warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"),
+                   (_("warning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"),
                     ibfd, in_name, out_name);
                }
            }
@@ -13993,7 +14024,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
          if (in_attr[i].i != out_attr[i].i)
            {
              _bfd_error_handler
-               (_("error: %B uses iWMMXt register arguments, %B does not"),
+               (_("error: %pB uses iWMMXt register arguments, %pB does not"),
                 ibfd, obfd);
              result = FALSE;
            }
@@ -14010,7 +14041,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              if (in_attr[i].i != out_attr[i].i)
                {
                  _bfd_error_handler
-                   (_("error: fp16 format mismatch between %B and %B"),
+                   (_("error: fp16 format mismatch between %pB and %pB"),
                     ibfd, obfd);
                  result = FALSE;
                }
@@ -14046,7 +14077,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
              if (in_attr[Tag_MPextension_use].i != in_attr[i].i)
                {
                  _bfd_error_handler
-                   (_("%B has both the current and legacy "
+                   (_("%pB has both the current and legacy "
                       "Tag_MPextension_use attributes"),
                     ibfd);
                  result = FALSE;
@@ -14365,7 +14396,7 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
             object file containing relocations but no symbol table.  */
          && (r_symndx > STN_UNDEF || nsyms > 0))
        {
-         _bfd_error_handler (_("%B: bad symbol index: %d"), abfd,
+         _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd,
                              r_symndx);
          return FALSE;
        }
@@ -14518,7 +14549,7 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
            if (bfd_link_pic (info))
              {
                _bfd_error_handler
-                 (_("%B: 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 when making a shared object; recompile with -fPIC"),
                   abfd, elf32_arm_howto_table_1[r_type].name,
                   (h) ? h->root.root.string : "a local symbol");
                bfd_set_error (bfd_error_bad_value);
@@ -15633,7 +15664,7 @@ maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
 
       info->flags |= DF_TEXTREL;
       info->callbacks->minfo
-       (_("%B: dynamic relocation against `%T' in read-only section `%A'\n"),
+       (_("%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.  */
@@ -15878,7 +15909,7 @@ elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
       if (!bfd_elf32_arm_process_before_allocation (ibfd, info)
          || !bfd_elf32_arm_vfp11_erratum_scan (ibfd, info)
          || !bfd_elf32_arm_stm32l4xx_erratum_scan (ibfd, info))
-       _bfd_error_handler (_("Errors encountered processing file %B"), ibfd);
+       _bfd_error_handler (_("errors encountered processing file %pB"), ibfd);
     }
 
   /* Allocate space for the glue sections now that we've sized them.  */
@@ -17491,7 +17522,7 @@ make_branch_to_a8_stub (struct bfd_hash_entry *gen_entry,
      This check is just to be on the safe side...  */
   if ((veneered_insn_loc & ~0xfff) == (veneer_entry_loc & ~0xfff))
     {
-      _bfd_error_handler (_("%B: error: Cortex-A8 erratum stub is "
+      _bfd_error_handler (_("%pB: error: Cortex-A8 erratum stub is "
                            "allocated in unsafe location"), abfd);
       return FALSE;
     }
@@ -17518,7 +17549,7 @@ make_branch_to_a8_stub (struct bfd_hash_entry *gen_entry,
          {
            /* There's not much we can do apart from complain if this
               happens.  */
-           _bfd_error_handler (_("%B: error: Cortex-A8 erratum stub out "
+           _bfd_error_handler (_("%pB: error: Cortex-A8 erratum stub out "
                                  "of range (input file too large)"), abfd);
            return FALSE;
          }
@@ -18345,7 +18376,7 @@ elf32_arm_write_section (bfd *output_bfd,
 
                if ((signed) branch_to_veneer < -(1 << 25)
                    || (signed) branch_to_veneer >= (1 << 25))
-                 _bfd_error_handler (_("%B: error: VFP11 veneer out of "
+                 _bfd_error_handler (_("%pB: error: VFP11 veneer out of "
                                        "range"), output_bfd);
 
                insn |= (branch_to_veneer >> 2) & 0xffffff;
@@ -18367,7 +18398,7 @@ elf32_arm_write_section (bfd *output_bfd,
 
                if ((signed) branch_from_veneer < -(1 << 25)
                    || (signed) branch_from_veneer >= (1 << 25))
-                 _bfd_error_handler (_("%B: error: VFP11 veneer out of "
+                 _bfd_error_handler (_("%pB: error: VFP11 veneer out of "
                                        "range"), output_bfd);
 
                /* Original instruction.  */
@@ -18418,12 +18449,13 @@ elf32_arm_write_section (bfd *output_bfd,
                      branch_to_veneer - (1 << 24) : 0;
 
                    _bfd_error_handler
-                     (_("%B(%#Lx): error: Cannot create STM32L4XX veneer. "
-                        "Jump out of range by %Ld bytes. "
-                        "Cannot encode branch instruction. "),
+                     (_("%pB(%#" PRIx64 "): error: "
+                        "cannot create STM32L4XX veneer; "
+                        "jump out of range by %" PRId64 " bytes; "
+                        "cannot encode branch instruction"),
                       output_bfd,
-                      stm32l4xx_errnode->vma - 4,
-                      out_of_range);
+                      (uint64_t) (stm32l4xx_errnode->vma - 4),
+                      (int64_t) out_of_range);
                    continue;
                  }
 
@@ -18456,8 +18488,8 @@ elf32_arm_write_section (bfd *output_bfd,
                              STM32L4XX_ERRATUM_LDM_VENEER_SIZE) < -(1 << 24)
                    || (signed) (veneer_r - veneer) >= (1 << 24))
                  {
-                   _bfd_error_handler (_("%B: error: Cannot create STM32L4XX "
-                                         "veneer."), output_bfd);
+                   _bfd_error_handler (_("%pB: error: cannot create STM32L4XX "
+                                         "veneer"), output_bfd);
                     continue;
                  }
 
@@ -19478,7 +19510,7 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
       && !(ibfd->flags & DYNAMIC)
       && (in_flags & EF_ARM_BE8))
     {
-      _bfd_error_handler (_("error: %B is already in final BE8 format"),
+      _bfd_error_handler (_("error: %pB is already in final BE8 format"),
                          ibfd);
       return FALSE;
     }
@@ -19554,7 +19586,7 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
                                      EF_ARM_EABI_VERSION (out_flags)))
     {
       _bfd_error_handler
-       (_("error: Source object %B has EABI version %d, but target %B has EABI version %d"),
+       (_("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;
@@ -19569,7 +19601,7 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
       if ((in_flags & EF_ARM_APCS_26) != (out_flags & EF_ARM_APCS_26))
        {
          _bfd_error_handler
-           (_("error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"),
+           (_("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;
@@ -19579,11 +19611,11 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
        {
          if (in_flags & EF_ARM_APCS_FLOAT)
            _bfd_error_handler
-             (_("error: %B passes floats in float registers, whereas %B passes them in integer registers"),
+             (_("error: %pB passes floats in float registers, whereas %pB passes them in integer registers"),
               ibfd, obfd);
          else
            _bfd_error_handler
-             (_("error: %B passes floats in integer registers, whereas %B passes them in float registers"),
+             (_("error: %pB passes floats in integer registers, whereas %pB passes them in float registers"),
               ibfd, obfd);
 
          flags_compatible = FALSE;
@@ -19593,12 +19625,12 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
        {
          if (in_flags & EF_ARM_VFP_FLOAT)
            _bfd_error_handler
-             (_("error: %B uses VFP instructions, whereas %B does not"),
-              ibfd, obfd);
+             (_("error: %pB uses %s instructions, whereas %pB does not"),
+              ibfd, "VFP", obfd);
          else
            _bfd_error_handler
-             (_("error: %B uses FPA instructions, whereas %B does not"),
-              ibfd, obfd);
+             (_("error: %pB uses %s instructions, whereas %pB does not"),
+              ibfd, "FPA", obfd);
 
          flags_compatible = FALSE;
        }
@@ -19607,12 +19639,12 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
        {
          if (in_flags & EF_ARM_MAVERICK_FLOAT)
            _bfd_error_handler
-             (_("error: %B uses Maverick instructions, whereas %B does not"),
-              ibfd, obfd);
+             (_("error: %pB uses %s instructions, whereas %pB does not"),
+              ibfd, "Maverick", obfd);
          else
            _bfd_error_handler
-             (_("error: %B does not use Maverick instructions, whereas %B does"),
-              ibfd, obfd);
+             (_("error: %pB does not use %s instructions, whereas %pB does"),
+              ibfd, "Maverick", obfd);
 
          flags_compatible = FALSE;
        }
@@ -19630,11 +19662,11 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
            {
              if (in_flags & EF_ARM_SOFT_FLOAT)
                _bfd_error_handler
-                 (_("error: %B uses software FP, whereas %B uses hardware FP"),
+                 (_("error: %pB uses software FP, whereas %pB uses hardware FP"),
                   ibfd, obfd);
              else
                _bfd_error_handler
-                 (_("error: %B uses hardware FP, whereas %B uses software FP"),
+                 (_("error: %pB uses hardware FP, whereas %pB uses software FP"),
                   ibfd, obfd);
 
              flags_compatible = FALSE;
@@ -19648,13 +19680,13 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
          if (in_flags & EF_ARM_INTERWORK)
            {
              _bfd_error_handler
-               (_("Warning: %B supports interworking, whereas %B does not"),
+               (_("warning: %pB supports interworking, whereas %pB does not"),
                 ibfd, obfd);
            }
          else
            {
              _bfd_error_handler
-               (_("Warning: %B does not support interworking, whereas %B does"),
+               (_("warning: %pB does not support interworking, whereas %pB does"),
                 ibfd, obfd);
            }
        }
This page took 0.044994 seconds and 4 git commands to generate.