and fix a few stray errors.
	* elf-attrs.c (_bfd_elf_parse_attributes): Correct _bfd_error_handler
	arguments.
	* elfxx-mips.c (_bfd_mips_elf_final_link): Likewise.
	* elfnn-riscv.c (_bfd_riscv_relax_align): Likewise.
	(_bfd_riscv_relax_pc): Likewise and fix typos.
	* libbfd-in.h (_bfd_error_handler): Add attribute printf.
	* libbfd.h: Regenerate.
+2018-02-19  Alan Modra  <amodra@gmail.com>
+
+       * elf-attrs.c (_bfd_elf_parse_attributes): Correct _bfd_error_handler
+       arguments.
+       * elfxx-mips.c (_bfd_mips_elf_final_link): Likewise.
+       * elfnn-riscv.c (_bfd_riscv_relax_align): Likewise.
+       (_bfd_riscv_relax_pc): Likewise and fix typos.
+       * libbfd-in.h (_bfd_error_handler): Add attribute printf.
+       * libbfd.h: Regenerate.
+
 2018-02-19  Alan Modra  <amodra@gmail.com>
 
        * dwarf2.c (read_section): Don't use 'll' format modifier.
 
          len -= section_len;
          if (section_len <= 4)
            {
-             _bfd_error_handler (_("%pB: error: attribute section length too small: %ld"),
-                                 abfd, section_len);
+             _bfd_error_handler
+               (_("%pB: error: attribute section length too small: %" PRId64),
+                abfd, (int64_t) section_len);
              break;
            }
          section_len -= 4;
 
   /* Make sure there are enough NOPs to actually achieve the alignment.  */
   if (rel->r_addend < nop_bytes)
     {
-      (*_bfd_error_handler)
-       (_("%pB(%pA+0x%lx): %d bytes required for alignment "
-          "to %d-byte boundary, but only %d present"),
-          abfd, sym_sec, rel->r_offset, nop_bytes, alignment, rel->r_addend);
+      _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) nop_bytes, (int64_t) alignment, (int64_t) rel->r_addend);
       bfd_set_error (bfd_error_bad_value);
       return FALSE;
     }
        symval = hi_reloc.hi_addr;
        sym_sec = hi_reloc.sym_sec;
        if (!riscv_use_pcgp_hi_reloc(pcgp_relocs, hi->hi_sec_off))
-         (*_bfd_error_handler)
-          (_("%pB(%pA+0x%lx): Unable to clear RISCV_PCREL_HI20 reloc"
-             "for cooresponding RISCV_PCREL_LO12 reloc"),
-           abfd, sec, rel->r_offset);
+         _bfd_error_handler
+           (_("%pB(%pA+%#" PRIx64 "): Unable to clear RISCV_PCREL_HI20 reloc "
+              "for corresponding RISCV_PCREL_LO12 reloc"),
+            abfd, sec, (uint64_t) rel->r_offset);
       }
       break;
 
 
          if (o->size != sizeof (Elf32_External_RegInfo))
            {
              _bfd_error_handler
-               (_("%pB: .reginfo section size should be %d bytes, "
-                  "actual size is %d"),
-                abfd, sizeof (Elf32_External_RegInfo), o->size);
+               (_("%pB: .reginfo section size should be %ld bytes, "
+                  "actual size is %" PRId64),
+                abfd, (unsigned long) sizeof (Elf32_External_RegInfo),
+                (int64_t) o->size);
 
              return FALSE;
            }
 
 extern void *bfd_zmalloc2
   (bfd_size_type, bfd_size_type);
 
-extern void _bfd_error_handler (const char *s, ...);
+extern void _bfd_error_handler (const char *s, ...) ATTRIBUTE_PRINTF_1;
 
 /* These routines allocate and free things on the BFD's objalloc.  */
 
 
 extern void *bfd_zmalloc2
   (bfd_size_type, bfd_size_type);
 
-extern void _bfd_error_handler (const char *s, ...);
+extern void _bfd_error_handler (const char *s, ...) ATTRIBUTE_PRINTF_1;
 
 /* These routines allocate and free things on the BFD's objalloc.  */