/* Set the howto pointer for an NDS32 ELF reloc. */
-static void
-nds32_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr,
+static bfd_boolean
+nds32_info_to_howto_rel (bfd *abfd, arelent *cache_ptr,
Elf_Internal_Rela *dst)
{
enum elf_nds32_reloc_type r_type;
if (r_type > R_NDS32_GNU_VTENTRY)
{
/* xgettext:c-format */
- _bfd_error_handler (_("%B: invalid NDS32 reloc number: %d"), abfd, r_type);
- r_type = 0;
+ _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+ abfd, r_type);
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
}
cache_ptr->howto = bfd_elf32_bfd_reloc_type_table_lookup (r_type);
+ return TRUE;
}
-static void
+static bfd_boolean
nds32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr,
Elf_Internal_Rela *dst)
{
- BFD_ASSERT ((ELF32_R_TYPE (dst->r_info) == R_NDS32_NONE)
- || ((ELF32_R_TYPE (dst->r_info) > R_NDS32_GNU_VTENTRY)
- && (ELF32_R_TYPE (dst->r_info) < R_NDS32_max)));
- cache_ptr->howto = bfd_elf32_bfd_reloc_type_table_lookup (ELF32_R_TYPE (dst->r_info));
+ 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 = 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;
}
/* Support for core dump NOTE sections.
}
else
{
- _bfd_error_handler (_("error: Can't find symbol: _SDA_BASE_."));
+ _bfd_error_handler (_("error: can't find symbol: %s"), "_SDA_BASE_");
return bfd_reloc_dangerous;
}
}
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. */
/* Set the _ITB_BASE_. */
if (!nds32_elf_ex9_itb_base (info))
{
- _bfd_error_handler (_("%B: error: Cannot set _ITB_BASE_"),
- output_bfd);
+ _bfd_error_handler (_("%pB: error: cannot set %s"),
+ output_bfd, "_ITB_BASE_");
bfd_set_error (bfd_error_bad_value);
}
}
if (table->target_optimize & NDS32_RELAX_JUMP_IFC_ON)
if (!nds32_elf_ifc_reloc ())
- _bfd_error_handler (_("error: IFC relocation error."));
+ _bfd_error_handler (_("error: IFC relocation error"));
/* Relocation for .ex9.itable. */
if (table->target_optimize & NDS32_RELAX_EX9_ON
if (r_type >= R_NDS32_max)
{
/* xgettext:c-format */
- _bfd_error_handler (_("%B: error: unknown relocation type %d."),
+ _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
input_bfd, r_type);
bfd_set_error (bfd_error_bad_value);
ret = FALSE;
if (bfd_link_pic (info))
{
_bfd_error_handler
- (_("%B: warning: cannot deal R_NDS32_25_ABS_RELA in shared "
- "mode."), input_bfd);
+ (_("%pB: warning: %s unsupported in shared mode"),
+ input_bfd, "R_NDS32_25_ABS_RELA");
return FALSE;
}
break;
{
/* Incorrect alignment. */
_bfd_error_handler
- (_("%B: warning: unaligned access to GOT entry."), input_bfd);
+ (_("%pB: warning: unaligned access to GOT entry"), input_bfd);
ret = FALSE;
r = bfd_reloc_dangerous;
goto check_reloc;
if (r != bfd_reloc_ok)
{
_bfd_error_handler
- (_("%B: warning: relocate SDA_BASE failed."), input_bfd);
+ (_("%pB: warning: relocate SDA_BASE failed"), input_bfd);
ret = FALSE;
goto check_reloc;
}
/* Incorrect alignment. */
_bfd_error_handler
/* xgettext:c-format */
- (_("%B(%A): warning: unaligned small data access of type %d."),
+ (_("%pB(%pA): warning: unaligned small data access"
+ " of type %d"),
input_bfd, input_section, r_type);
ret = FALSE;
goto check_reloc;
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B: ISR vector size mismatch"
+ (_("%pB: ISR vector size mismatch"
" with previous modules, previous %u-byte, current %u-byte"),
ibfd,
nds32_vec_size == 1 ? 4 : nds32_vec_size == 2 ? 16 : 0xffffffff,
if (bfd_little_endian (ibfd) != bfd_little_endian (obfd))
{
_bfd_error_handler
- (_("%B: warning: Endian mismatch with previous modules."), ibfd);
+ (_("%pB: warning: endian mismatch with previous modules"), ibfd);
bfd_set_error (bfd_error_bad_value);
return FALSE;
if (in_version == E_NDS32_ELF_VER_1_2)
{
_bfd_error_handler
- (_("%B: warning: Older version of object file encountered, "
- "Please recompile with current tool chain."), ibfd);
+ (_("%pB: warning: older version of object file encountered, "
+ "please recompile with current tool chain"), ibfd);
}
/* We may need to merge V1 and V2 arch object files to V2. */
if ((in_flags & EF_NDS_ABI) != (out_flags & EF_NDS_ABI))
{
_bfd_error_handler
- (_("%B: error: ABI mismatch with previous modules."), ibfd);
+ (_("%pB: error: ABI mismatch with previous modules"), ibfd);
bfd_set_error (bfd_error_bad_value);
return FALSE;
if (((in_flags & EF_NDS_ARCH) != E_N1_ARCH))
{
_bfd_error_handler
- (_("%B: error: Instruction set mismatch with previous modules."), ibfd);
+ (_("%pB: error: instruction set mismatch with previous modules"),
+ ibfd);
bfd_set_error (bfd_error_bad_value);
return FALSE;
if (in_version != out_version)
_bfd_error_handler
/* xgettext:c-format */
- (_("%B: warning: Incompatible elf-versions %s and %s."),
+ (_("%pB: warning: incompatible elf-versions %s and %s"),
ibfd, nds32_elfver_strtab[out_version],
nds32_elfver_strtab[in_version]);
&& (blank_t2->offset > raddr
|| blank_t2->next->offset <= raddr))
_bfd_error_handler
- (_("%B: Error: search_nds32_elf_blank reports wrong node\n"), abfd);
+ (_("%pB: error: search_nds32_elf_blank reports wrong node"),
+ abfd);
/* Mark reloc in deleted portion as NONE.
For some relocs like R_NDS32_LABEL that doesn't modify the
static const char * unrecognized_reloc_msg =
/* xgettext:c-format */
- N_("%B: warning: %s points to unrecognized reloc at %#Lx");
+ N_("%pB: warning: %s points to unrecognized reloc at %#" PRIx64);
/* Relax LONGCALL1 relocation for nds32_elf_relax_section. */
if (hi_irelfn == irelend || lo_irelfn == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL1",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (i1_irelfn == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL2",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (hi_irelfn == irelend || lo_irelfn == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL3",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (hi_irelfn == irelend || lo_irelfn == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP1",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (i2_irelfn == irelend || cond_irelfn == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP2",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (hi_irelfn == irelend || lo_irelfn == irelend || cond_irelfn == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP3",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
else
{
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), reloc);
- irel->r_addend = irel->r_addend;
hi_irelfn->r_info = ELF32_R_INFO (ELF32_R_SYM (hi_irelfn->r_info),
cond_reloc);
}
if (hi_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL4",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (ptr_irel == irelend || em_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL4",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
/* Check these is enough space to insert jal in R_NDS32_EMPTY. */
if (cond_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL5",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (em_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL6",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (cond_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd,
- "R_NDS32_LONGCALL6", irel->r_offset);
+ "R_NDS32_LONGCALL6", (uint64_t) irel->r_offset);
return FALSE;
}
cond_irel->r_addend = 1;
if (cond_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd,
- "R_NDS32_LONGCALL6", irel->r_offset);
+ "R_NDS32_LONGCALL6", (uint64_t) irel->r_offset);
return FALSE;
}
cond_irel->r_addend = 1;
if (hi_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP4",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (ptr_irel == irelend || em_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP4",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (cond_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP5",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (em_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP6",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (cond_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP7",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
if (hi_irelfn == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LOADSTORE",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
break;
if (range_type == NDS32_LOADSTORE_FLOAT_S
- || range_type == NDS32_LOADSTORE_FLOAT_S)
+ || range_type == NDS32_LOADSTORE_FLOAT_D)
{
range_l = sdata_range[0][0];
range_h = sdata_range[0][1];
if (re_irel == irelend)
{
_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_PTR",
- irel->r_offset);
+ (uint64_t) irel->r_offset);
return FALSE;
}
break;
case NDS32_RELAX_JUMP_IFC_ROUND:
if (!nds32_elf_ifc_finish (link_info))
- _bfd_error_handler (_("error: Jump IFC Fail."));
+ _bfd_error_handler (_("error: jump IFC fail"));
if (table->target_optimize & NDS32_RELAX_EX9_ON)
{
pass++;
{
/* Do jump IFC optimization again. */
if (!nds32_elf_ifc_finish (link_info))
- _bfd_error_handler (_("error: Jump IFC Fail."));
+ _bfd_error_handler (_("error: jump IFC fail"));
}
break;
default:
/* Set the _ITB_BASE_. */
if (!nds32_elf_ex9_itb_base (link_info))
{
- _bfd_error_handler (_("%B: error: Cannot set _ITB_BASE_"), abfd);
+ _bfd_error_handler (_("%pB: error: cannot set %s"),
+ abfd, "_ITB_BASE_");
bfd_set_error (bfd_error_bad_value);
}
}
/* Begin of the region. */
if (begin_rel)
/* xgettext:c-format */
- _bfd_error_handler (_("%B: Nested OMIT_FP in %A."), abfd, sec);
+ _bfd_error_handler (_("%pB: nested OMIT_FP in %pA"), abfd, sec);
begin_rel = irel;
nds32_fag_init (&fag_head);
if (begin_rel == NULL)
{
/* xgettext:c-format */
- _bfd_error_handler (_("%B: Unmatched OMIT_FP in %A."), abfd, sec);
+ _bfd_error_handler (_("%pB: unmatched OMIT_FP in %pA"),
+ abfd, sec);
continue;
}
message instead. */
link_info->callbacks->einfo
/* xgettext:c-format */
- (_("%X%P: %B(%A): relocation \"%R\" goes out of range\n"),
+ (_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
abfd, input_section, * parent);
goto error_return;
sizeof (struct elf_nds32_code_hash_entry),
1023))
{
- _bfd_error_handler (_("Linker: cannot init ex9 hash table error \n"));
+ _bfd_error_handler (_("cannot init ex9 hash table error"));
return FALSE;
}
return TRUE;
(fix_ptr->sec->owner, fix_ptr->sec,
&source_contents, TRUE))
_bfd_error_handler
- (_("Linker: error cannot fixed ex9 relocation \n"));
+ (_("error: cannot fix ex9 relocation"));
if (temp_ptr->order < 32)
insn_ex9 = INSN_EX9_IT_2;
else
/* Incorrect alignment. */
_bfd_error_handler
/* xgettext:c-format */
- (_("%B: warning: unaligned small data access "
- "for entry: {%Ld, %Ld, %Ld}, addr = %#Lx, align = %#x"),
- abfd, irel->r_offset,
- irel->r_info, irel->r_addend, relocation, align);
+ (_("%pB: warning: unaligned small data access "
+ "for entry: {%" PRId64 ", %" PRId64 ", %" PRId64
+ "}, addr = %#" PRIx64 ", align = %#x"),
+ abfd, (int64_t) irel->r_offset,
+ (int64_t) irel->r_info, (int64_t) irel->r_addend,
+ (uint64_t) relocation, align);
off += 4;
continue;
}