projects
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introduce event_location_up
[binutils-gdb.git]
/
bfd
/
elf32-mcore.c
diff --git
a/bfd/elf32-mcore.c
b/bfd/elf32-mcore.c
index 01b136aa948fcc2d6ee25f5480466f78df4aebbf..79c0da606ac7b75aeb8ed0241303cae09c7989ab 100644
(file)
--- a/
bfd/elf32-mcore.c
+++ b/
bfd/elf32-mcore.c
@@
-1,5
+1,5
@@
/* Motorola MCore specific support for 32-bit ELF
/* Motorola MCore specific support for 32-bit ELF
- Copyright (C) 1994-201
5
Free Software Foundation, Inc.
+ Copyright (C) 1994-201
7
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This file is part of BFD, the Binary File Descriptor library.
@@
-49,13
+49,14
@@
mcore_elf_set_private_flags (bfd * abfd, flagword flags)
object file when linking. */
static bfd_boolean
object file when linking. */
static bfd_boolean
-mcore_elf_merge_private_bfd_data (bfd *
ibfd, bfd * obfd
)
+mcore_elf_merge_private_bfd_data (bfd *
ibfd, struct bfd_link_info *info
)
{
{
+ bfd *obfd = info->output_bfd;
flagword old_flags;
flagword new_flags;
/* Check if we have the same endianness. */
flagword old_flags;
flagword new_flags;
/* Check if we have the same endianness. */
- if (! _bfd_generic_verify_endian_match (ibfd,
obfd
))
+ if (! _bfd_generic_verify_endian_match (ibfd,
info
))
return FALSE;
if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
return FALSE;
if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
@@
-95,6
+96,7
@@
mcore_elf_unsupported_reloc (bfd * abfd,
{
BFD_ASSERT (reloc_entry->howto != (reloc_howto_type *)0);
{
BFD_ASSERT (reloc_entry->howto != (reloc_howto_type *)0);
+ /* xgettext:c-format */
_bfd_error_handler (_("%B: Relocation %s (%d) is not currently supported.\n"),
abfd,
reloc_entry->howto->name,
_bfd_error_handler (_("%B: Relocation %s (%d) is not currently supported.\n"),
abfd,
reloc_entry->howto->name,
@@
-110,11
+112,11
@@
static reloc_howto_type mcore_elf_howto_raw[] =
/* This reloc does nothing. */
HOWTO (R_MCORE_NONE, /* type */
0, /* rightshift */
/* This reloc does nothing. */
HOWTO (R_MCORE_NONE, /* type */
0, /* rightshift */
-
2
, /* size (0 = byte, 1 = short, 2 = long) */
-
32,
/* bitsize */
+
3
, /* size (0 = byte, 1 = short, 2 = long) */
+
0,
/* bitsize */
FALSE, /* pc_relative */
0, /* bitpos */
FALSE, /* pc_relative */
0, /* bitpos */
- complain_overflow_
bitfield
, /* complain_on_overflow */
+ complain_overflow_
dont
, /* complain_on_overflow */
NULL, /* special_function */
"R_MCORE_NONE", /* name */
FALSE, /* partial_inplace */
NULL, /* special_function */
"R_MCORE_NONE", /* name */
FALSE, /* partial_inplace */
@@
-340,13
+342,23
@@
mcore_elf_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED,
arelent * cache_ptr,
Elf_Internal_Rela * dst)
{
arelent * cache_ptr,
Elf_Internal_Rela * dst)
{
+ unsigned int r_type;
+
if (! mcore_elf_howto_table [R_MCORE_PCRELIMM8BY4])
/* Initialize howto table if needed. */
mcore_elf_howto_init ();
if (! mcore_elf_howto_table [R_MCORE_PCRELIMM8BY4])
/* Initialize howto table if needed. */
mcore_elf_howto_init ();
- BFD_ASSERT (ELF32_R_TYPE (dst->r_info) < (unsigned int) R_MCORE_max);
+ r_type = ELF32_R_TYPE (dst->r_info);
+ if (r_type >= R_MCORE_max)
+ {
+ /* xgettext:c-format */
+ _bfd_error_handler (_("%B: unrecognised MCore reloc number: %d"),
+ abfd, r_type);
+ bfd_set_error (bfd_error_bad_value);
+ r_type = R_MCORE_NONE;
+ }
- cache_ptr->howto = mcore_elf_howto_table [
ELF32_R_TYPE (dst->r_info)
];
+ cache_ptr->howto = mcore_elf_howto_table [
r_type
];
}
\f
/* The RELOCATE_SECTION function is called by the ELF backend linker
}
\f
/* The RELOCATE_SECTION function is called by the ELF backend linker
@@
-400,7
+412,7
@@
mcore_elf_relocate_section (bfd * output_bfd,
input_bfd,
input_section,
(long) input_section->reloc_count,
input_bfd,
input_section,
(long) input_section->reloc_count,
- (
info->relocatable
) ? " (relocatable)" : "");
+ (
bfd_link_relocatable (info)
) ? " (relocatable)" : "");
#endif
if (! mcore_elf_howto_table [R_MCORE_PCRELIMM8BY4]) /* Initialize howto table if needed */
#endif
if (! mcore_elf_howto_table [R_MCORE_PCRELIMM8BY4]) /* Initialize howto table if needed */
@@
-424,6
+436,7
@@
mcore_elf_relocate_section (bfd * output_bfd,
if ((unsigned) r_type >= (unsigned) R_MCORE_max
|| ! mcore_elf_howto_table [(int)r_type])
{
if ((unsigned) r_type >= (unsigned) R_MCORE_max
|| ! mcore_elf_howto_table [(int)r_type])
{
+ /* xgettext:c-format */
_bfd_error_handler (_("%B: Unknown relocation type %d\n"),
input_bfd, (int) r_type);
_bfd_error_handler (_("%B: Unknown relocation type %d\n"),
input_bfd, (int) r_type);
@@
-438,6
+451,7
@@
mcore_elf_relocate_section (bfd * output_bfd,
/* Complain about known relocation that are not yet supported. */
if (howto->special_function == mcore_elf_unsupported_reloc)
{
/* Complain about known relocation that are not yet supported. */
if (howto->special_function == mcore_elf_unsupported_reloc)
{
+ /* xgettext:c-format */
_bfd_error_handler (_("%B: Relocation %s (%d) is not currently supported.\n"),
input_bfd,
howto->name,
_bfd_error_handler (_("%B: Relocation %s (%d) is not currently supported.\n"),
input_bfd,
howto->name,
@@
-469,7
+483,7
@@
mcore_elf_relocate_section (bfd * output_bfd,
RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
rel, 1, relend, howto, 0, contents);
RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
rel, 1, relend, howto, 0, contents);
- if (
info->relocatable
)
+ if (
bfd_link_relocatable (info)
)
continue;
switch (r_type)
continue;
switch (r_type)
@@
-589,7
+603,7
@@
mcore_elf_check_relocs (bfd * abfd,
const Elf_Internal_Rela * rel;
const Elf_Internal_Rela * rel_end;
const Elf_Internal_Rela * rel;
const Elf_Internal_Rela * rel_end;
- if (
info->relocatable
)
+ if (
bfd_link_relocatable (info)
)
return TRUE;
symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
return TRUE;
symtab_hdr = & elf_tdata (abfd)->symtab_hdr;