gdb/tui: Link source and assembler scrolling .... again
[deliverable/binutils-gdb.git] / bfd / coff-arm.c
index 4e80a596ea233484dfb7ce78bac60d31e5bcd21a..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
@@ -1034,7 +1039,7 @@ find_thumb_glue (struct bfd_link_info *info,
 
   if (myh == NULL)
     /* xgettext:c-format */
-    _bfd_error_handler (_("%B: unable to find THUMB glue '%s' for `%s'"),
+    _bfd_error_handler (_("%pB: unable to find THUMB glue '%s' for `%s'"),
                        input_bfd, tmp_name, name);
 
   free (tmp_name);
@@ -1063,7 +1068,7 @@ find_arm_glue (struct bfd_link_info *info,
 
   if (myh == NULL)
     /* xgettext:c-format */
-    _bfd_error_handler (_("%B: unable to find ARM glue '%s' for `%s'"),
+    _bfd_error_handler (_("%pB: unable to find ARM glue '%s' for `%s'"),
                        input_bfd, tmp_name, name);
 
   free (tmp_name);
@@ -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 */
-                             (_("%B(%s): warning: interworking not enabled.\n"
-                                "  first occurrence: %B: 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 */
-                             (_("%B(%s): warning: interworking not enabled.\n"
-                                "  first occurrence: %B: 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 */
-           (_("%B: bad reloc address %#Lx in section `%A'"),
-            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;
     }
 
@@ -2073,7 +2078,7 @@ bfd_arm_process_before_allocation (bfd *             abfd,
          if (symndx >= obj_conv_table_size (abfd))
            {
              /* xgettext:c-format */
-             _bfd_error_handler (_("%B: illegal symbol index in reloc: %ld"),
+             _bfd_error_handler (_("%pB: illegal symbol index in reloc: %ld"),
                                  abfd, symndx);
              continue;
            }
@@ -2205,7 +2210,7 @@ coff_arm_merge_private_bfd_data (bfd * ibfd, struct bfd_link_info *info)
            {
              _bfd_error_handler
                /* xgettext: c-format */
-               (_("error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"),
+               (_("error: %pB is compiled for APCS-%d, whereas %pB is compiled for APCS-%d"),
                 ibfd, APCS_26_FLAG (ibfd) ? 26 : 32,
                 obfd, APCS_26_FLAG (obfd) ? 26 : 32
                 );
@@ -2219,12 +2224,12 @@ coff_arm_merge_private_bfd_data (bfd * ibfd, struct bfd_link_info *info)
              if (APCS_FLOAT_FLAG (ibfd))
                /* xgettext: c-format */
                _bfd_error_handler (_("\
-error: %B passes floats in float registers, whereas %B passes them in integer registers"),
+error: %pB passes floats in float registers, whereas %pB passes them in integer registers"),
                                    ibfd, obfd);
              else
                /* xgettext: c-format */
                _bfd_error_handler (_("\
-error: %B passes floats in integer registers, whereas %B passes them in float registers"),
+error: %pB passes floats in integer registers, whereas %pB passes them in float registers"),
                                    ibfd, obfd);
 
              bfd_set_error (bfd_error_wrong_format);
@@ -2236,12 +2241,12 @@ error: %B passes floats in integer registers, whereas %B passes them in float re
              if (PIC_FLAG (ibfd))
                /* xgettext: c-format */
                _bfd_error_handler (_("\
-error: %B is compiled as position independent code, whereas target %B is absolute position"),
+error: %pB is compiled as position independent code, whereas target %pB is absolute position"),
                                    ibfd, obfd);
              else
                /* xgettext: c-format */
                _bfd_error_handler (_("\
-error: %B is compiled as absolute position code, whereas target %B is position independent"),
+error: %pB is compiled as absolute position code, whereas target %pB is position independent"),
                                    ibfd, obfd);
 
              bfd_set_error (bfd_error_wrong_format);
@@ -2268,12 +2273,12 @@ error: %B is compiled as absolute position code, whereas target %B is position i
              if (INTERWORK_FLAG (ibfd))
                /* xgettext: c-format */
                _bfd_error_handler (_("\
-Warning: %B supports interworking, whereas %B does not"),
+warning: %pB supports interworking, whereas %pB does not"),
                                    ibfd, obfd);
              else
                /* xgettext: c-format */
                _bfd_error_handler (_("\
-Warning: %B does not support interworking, whereas %B 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 %B 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 %B 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 %B because non-interworking code in %B 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.029354 seconds and 4 git commands to generate.