/* BFD back-end for ARM COFF files.
- Copyright (C) 1990-2018 Free Software Foundation, Inc.
+ Copyright (C) 1990-2020 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
#include "libbfd.h"
#include "coff/arm.h"
#include "coff/internal.h"
+#include "cpu-arm.h"
+#include "coff-arm.h"
#ifdef COFF_WITH_PE
#include "coff/pe.h"
#include "libcoff.h"
+/* All users of this file have bfd_octets_per_byte (abfd, sec) == 1. */
+#define OCTETS_PER_BYTE(ABFD, SEC) 1
+
/* Macros for manipulation the bits in the flags field of the coff data
structure. */
#define APCS_26_FLAG(abfd) \
arelent *reloc_entry,
asymbol *symbol ATTRIBUTE_UNUSED,
void * data,
- asection *input_section ATTRIBUTE_UNUSED,
+ asection *input_section,
bfd *output_bfd,
char **error_message ATTRIBUTE_UNUSED)
{
if (diff != 0)
{
reloc_howto_type *howto = reloc_entry->howto;
- unsigned char *addr = (unsigned char *) data + reloc_entry->address;
+ bfd_size_type octets = (reloc_entry->address
+ * OCTETS_PER_BYTE (abfd, input_section));
+ unsigned char *addr = (unsigned char *) data + octets;
- if (! bfd_reloc_offset_in_range (howto, abfd, input_section,
- reloc_entry->address
- * bfd_octets_per_byte (abfd)))
+ if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
return bfd_reloc_outofrange;
switch (howto->size)
b12);
}
-static const struct reloc_howto_struct *
+static reloc_howto_type *
coff_arm_reloc_type_lookup (bfd * abfd, bfd_reloc_code_real_type code)
{
#define ASTD(i,j) case i: return aoutarm_std_reloc_howto + j
continue;
/* FIXME - it is not clear which targets need this next test
and which do not. It is known that it is needed for the
- VxWorks and EPOC-PE targets, but it is also known that it
- was suppressed for other ARM targets. This ought to be
- sorted out one day. */
+ VxWorks targets but it is also known that it was suppressed
+ for other ARM targets. This ought to be sorted out one day. */
#ifdef ARM_COFF_BUGFIX
/* We must not ignore the symbol value. If the symbol is
within the same section, the relocation should have already
&& ! INTERWORK_FLAG (h_sec->owner))
_bfd_error_handler
/* xgettext:c-format */
- (_("%pB(%s): warning: interworking not enabled.\n"
- " first occurrence: %pB: arm call to thumb"),
+ (_("%pB(%s): warning: interworking not enabled; "
+ "first occurrence: %pB: arm call to thumb"),
h_sec->owner, name, input_bfd);
--my_offset;
&& ! globals->support_old_code)
_bfd_error_handler
/* xgettext:c-format */
- (_("%pB(%s): warning: interworking not enabled.\n"
- " first occurrence: %pB: thumb call to arm\n"
- " consider relinking with --support-old-code enabled"),
+ (_("%pB(%s): warning: interworking not enabled; "
+ "first occurrence: %pB: thumb call to arm; "
+ "consider relinking with --support-old-code "
+ "enabled"),
h_sec->owner, name, input_bfd);
-- my_offset;
sec = bfd_make_section_with_flags (abfd, ARM2THUMB_GLUE_SECTION_NAME,
flags);
if (sec == NULL
- || ! bfd_set_section_alignment (abfd, sec, 2))
+ || !bfd_set_section_alignment (sec, 2))
return FALSE;
}
flags);
if (sec == NULL
- || ! bfd_set_section_alignment (abfd, sec, 2))
+ || !bfd_set_section_alignment (sec, 2))
return FALSE;
}
if (INTERWORK_FLAG (ibfd))
/* xgettext: c-format */
_bfd_error_handler (_("\
-Warning: %pB supports interworking, whereas %pB does not"),
+warning: %pB supports interworking, whereas %pB does not"),
ibfd, obfd);
else
/* xgettext: c-format */
_bfd_error_handler (_("\
-Warning: %pB does not support interworking, whereas %pB does"),
+warning: %pB does not support interworking, whereas %pB does"),
ibfd, obfd);
}
}
if (INTERWORK_SET (abfd) && (INTERWORK_FLAG (abfd) != flag))
{
if (flag)
- _bfd_error_handler (_("Warning: Not setting interworking flag of %pB since it has already been specified as non-interworking"),
+ _bfd_error_handler (_("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 %pB due to outside request"),
+ _bfd_error_handler (_("warning: clearing the interworking flag of %pB due to outside request"),
abfd);
flag = 0;
}
{
/* xgettext:c-format */
_bfd_error_handler (_("\
-Warning: Clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"),
+warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"),
dest, src);
}