tfile_target::close: trace_fd can't be -1
[deliverable/binutils-gdb.git] / bfd / coff-arm.c
index c81b4337f065dc1eb9a1dadd436ab80785a4b0ed..84477eaa8fee51c159caab5dfa7ea154e83f5a4e 100644 (file)
@@ -1,5 +1,5 @@
 /* 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.
@@ -24,6 +24,8 @@
 #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"
@@ -31,6 +33,9 @@
 
 #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) \
@@ -94,7 +99,7 @@ coff_arm_reloc (bfd *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)
 {
@@ -112,11 +117,11 @@ coff_arm_reloc (bfd *abfd,
   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)
@@ -814,7 +819,7 @@ coff_thumb_pcrel_12 (bfd *abfd,
                                  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
@@ -1274,9 +1279,8 @@ coff_arm_relocate_section (bfd *output_bfd,
            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
@@ -1365,8 +1369,8 @@ coff_arm_relocate_section (bfd *output_bfd,
                              && ! 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;
@@ -1455,9 +1459,10 @@ coff_arm_relocate_section (bfd *output_bfd,
                              && ! 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;
@@ -1748,8 +1753,8 @@ coff_arm_relocate_section (bfd *output_bfd,
        case bfd_reloc_outofrange:
          _bfd_error_handler
            /* xgettext:c-format */
-           (_("%pB: bad reloc address %#Lx in section `%pA'"),
-            input_bfd, rel->r_vaddr, input_section);
+           (_("%pB: bad reloc address %#" PRIx64 " in section `%pA'"),
+            input_bfd, (uint64_t) rel->r_vaddr, input_section);
          return FALSE;
        case bfd_reloc_overflow:
          {
@@ -1989,7 +1994,7 @@ bfd_arm_get_bfd_for_interworking (bfd *                    abfd,
       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;
     }
 
@@ -2003,7 +2008,7 @@ bfd_arm_get_bfd_for_interworking (bfd *                    abfd,
                                         flags);
 
       if (sec == NULL
-         || ! bfd_set_section_alignment (abfd, sec, 2))
+         || !bfd_set_section_alignment (sec, 2))
        return FALSE;
     }
 
@@ -2268,12 +2273,12 @@ error: %pB is compiled as absolute position code, whereas target %pB is position
              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);
            }
        }
@@ -2363,10 +2368,10 @@ _bfd_coff_arm_set_private_flags (bfd * abfd, flagword flags)
   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;
     }
@@ -2424,7 +2429,7 @@ coff_arm_copy_private_bfd_data (bfd * src, bfd * dest)
                {
                  /* 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);
                }
 
This page took 0.039817 seconds and 4 git commands to generate.