/* BFD back-end for National Semiconductor's CR16 ELF
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2019 Free Software Foundation, Inc.
Written by M R Swami Reddy.
This file is part of BFD, the Binary File Descriptor library.
/* Retrieve a howto ptr using a BFD reloc_code. */
static reloc_howto_type *
-elf_cr16_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+elf_cr16_reloc_type_lookup (bfd *abfd,
bfd_reloc_code_real_type code)
{
unsigned int i;
if (code == cr16_reloc_map[i].bfd_reloc_enum)
return &cr16_elf_howto_table[cr16_reloc_map[i].cr16_reloc_type];
- _bfd_error_handler (_("Unsupported CR16 relocation type: 0x%x\n"), code);
+ _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+ abfd, code);
return NULL;
}
/* Retrieve a howto ptr using an internal relocation entry. */
-static void
-elf_cr16_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr,
+static bfd_boolean
+elf_cr16_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_CR16_MAX)
{
/* xgettext:c-format */
- _bfd_error_handler (_("%B: unrecognised CR16 reloc number: %d"),
+ _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
- r_type = R_CR16_NONE;
+ return FALSE;
}
cache_ptr->howto = cr16_elf_howto_table + r_type;
+ return TRUE;
}
/* Look through the relocs for a section during the first phase.
file. This gets the CR16 architecture right based on the machine
number. */
-static void
-_bfd_cr16_elf_final_write_processing (bfd *abfd,
- bfd_boolean linker ATTRIBUTE_UNUSED)
+static bfd_boolean
+_bfd_cr16_elf_final_write_processing (bfd *abfd)
{
unsigned long val;
switch (bfd_get_mach (abfd))
val = EM_CR16;
break;
}
-
-
- elf_elfheader (abfd)->e_flags |= val;
+ elf_elfheader (abfd)->e_flags |= val;
+ return _bfd_elf_final_write_processing (abfd);
}
if (!((ELF32_R_TYPE (irel->r_info) == (int) R_CR16_NUM32a)
|| (ELF32_R_TYPE (irel->r_info) == (int) R_CR16_NUM32)))
{
- *errmsg = _("unsupported reloc type");
+ *errmsg = _("unsupported relocation type");
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
#define bfd_elf32_bfd_reloc_type_lookup elf_cr16_reloc_type_lookup
#define bfd_elf32_bfd_reloc_name_lookup elf_cr16_reloc_name_lookup
#define elf_info_to_howto elf_cr16_info_to_howto
-#define elf_info_to_howto_rel 0
+#define elf_info_to_howto_rel NULL
#define elf_backend_relocate_section elf32_cr16_relocate_section
#define bfd_elf32_bfd_relax_section elf32_cr16_relax_section
#define bfd_elf32_bfd_get_relocated_section_contents \