]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - bfd/elf32-ft32.c
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / bfd / elf32-ft32.c
index 5a6ec764804afdf06f6425db2f39710c1a99fd8d..be5baae5b4c1d90308e8b8e581ff1e107ce81984 100644 (file)
@@ -1,8 +1,8 @@
 /* ft32-specific support for 32-bit ELF.
 /* ft32-specific support for 32-bit ELF.
-   Copyright (C) 2013-2021 Free Software Foundation, Inc.
+   Copyright (C) 2013-2024 Free Software Foundation, Inc.
 
    Copied from elf32-moxie.c which is..
 
    Copied from elf32-moxie.c which is..
-   Copyright (C) 2009-2021 Free Software Foundation, Inc.
+   Copyright (C) 2009-2024 Free Software Foundation, Inc.
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -29,7 +29,7 @@
 #include "elf/ft32.h"
 #include "opcode/ft32.h"
 
 #include "elf/ft32.h"
 #include "opcode/ft32.h"
 
-static bfd_boolean debug_relax = FALSE;
+static bool debug_relax = false;
 
 static bfd_reloc_status_type
 bfd_elf_ft32_diff_reloc (bfd *, arelent *, asymbol *, void *,
 
 static bfd_reloc_status_type
 bfd_elf_ft32_diff_reloc (bfd *, arelent *, asymbol *, void *,
@@ -40,187 +40,186 @@ static reloc_howto_type ft32_elf_howto_table [] =
   /* This reloc does nothing.  */
   HOWTO (R_FT32_NONE,          /* type */
         0,                     /* rightshift */
   /* This reloc does nothing.  */
   HOWTO (R_FT32_NONE,          /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
-        32,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        0,                     /* size */
+        0,                     /* bitsize */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         0,                     /* bitpos */
-        complain_overflow_bitfield, /* complain_on_overflow */
+        complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_NONE",         /* name */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_NONE",         /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
 
   HOWTO (R_FT32_32,            /* type */
         0,                     /* rightshift */
 
   /* A 32 bit absolute relocation.  */
 
   HOWTO (R_FT32_32,            /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        4,                     /* size */
         32,                    /* bitsize */
         32,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_32",           /* name */
         0,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_32",           /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0xffffffff,            /* dst_mask */
         0x00000000,            /* src_mask */
         0xffffffff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_16,            /* type */
         0,                     /* rightshift */
 
   HOWTO (R_FT32_16,            /* type */
         0,                     /* rightshift */
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        2,                     /* size */
         16,                    /* bitsize */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_16",           /* name */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_16",           /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x0000ffff,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x0000ffff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_8,             /* type */
         0,                     /* rightshift */
 
   HOWTO (R_FT32_8,             /* type */
         0,                     /* rightshift */
-        0,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size */
         8,                     /* bitsize */
         8,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_8",            /* name */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_8",            /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x000000ff,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x000000ff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_10,            /* type */
         0,                     /* rightshift */
 
   HOWTO (R_FT32_10,            /* type */
         0,                     /* rightshift */
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        2,                     /* size */
         10,                    /* bitsize */
         10,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         4,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_10",           /* name */
         4,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_10",           /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x00003ff0,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x00003ff0,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_20,            /* type */
         0,                     /* rightshift */
 
   HOWTO (R_FT32_20,            /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        4,                     /* size */
         20,                    /* bitsize */
         20,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_20",           /* name */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_20",           /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x000fffff,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x000fffff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_17,            /* type */
         0,                     /* rightshift */
 
   HOWTO (R_FT32_17,            /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        4,                     /* size */
         17,                    /* bitsize */
         17,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_17",           /* name */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_17",           /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x0001ffff,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x0001ffff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_18,            /* type */
         2,                     /* rightshift */
 
   HOWTO (R_FT32_18,            /* type */
         2,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        4,                     /* size */
         18,                    /* bitsize */
         18,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_18",           /* name */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_18",           /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x0003ffff,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x0003ffff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_RELAX,         /* type */
         0,                     /* rightshift */
 
   HOWTO (R_FT32_RELAX,         /* type */
         0,                     /* rightshift */
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        2,                     /* size */
         10,                    /* bitsize */
         10,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         4,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_RELAX",        /* name */
         4,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_RELAX",        /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x00000000,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x00000000,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_FT32_SC0,           /* type */
         0,                     /* rightshift */
 
   HOWTO (R_FT32_SC0,           /* type */
         0,                     /* rightshift */
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        2,                     /* size */
         10,                    /* bitsize */
         10,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         4,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_SC0",          /* name */
         4,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_SC0",          /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x00000000,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x00000000,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
   HOWTO (R_FT32_SC1,           /* type */
         2,                     /* rightshift */
   HOWTO (R_FT32_SC1,           /* type */
         2,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        4,                     /* size */
         22,                    /* bitsize */
         22,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         7,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_SC1",          /* name */
         7,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_SC1",          /* name */
-        TRUE,                  /* partial_inplace */
+        true,                  /* partial_inplace */
         0x07ffff80,            /* src_mask */
         0x07ffff80,            /* dst_mask */
         0x07ffff80,            /* src_mask */
         0x07ffff80,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
   HOWTO (R_FT32_15,            /* type */
         0,                     /* rightshift */
   HOWTO (R_FT32_15,            /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        4,                     /* size */
         15,                    /* bitsize */
         15,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_15",           /* name */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_FT32_15",           /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0x00000000,            /* src_mask */
         0x00007fff,            /* dst_mask */
         0x00000000,            /* src_mask */
         0x00007fff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
   HOWTO (R_FT32_DIFF32,                /* type */
         0,                     /* rightshift */
   HOWTO (R_FT32_DIFF32,                /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        4,                     /* size */
         32,                    /* bitsize */
         32,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_ft32_diff_reloc, /* special_function */
         "R_FT32_DIFF32",       /* name */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_ft32_diff_reloc, /* special_function */
         "R_FT32_DIFF32",       /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffffffff,            /* dst_mask */
         0,                     /* src_mask */
         0xffffffff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 };
 \f
 };
 \f
-\f
 /* Map BFD reloc types to FT32 ELF reloc types.  */
 
 struct ft32_reloc_map
 /* Map BFD reloc types to FT32 ELF reloc types.  */
 
 struct ft32_reloc_map
@@ -291,7 +290,7 @@ ft32_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name)
 
 /* Set the howto pointer for an FT32 ELF reloc.  */
 
 
 /* Set the howto pointer for an FT32 ELF reloc.  */
 
-static bfd_boolean
+static bool
 ft32_info_to_howto_rela (bfd *abfd,
                          arelent *cache_ptr,
                          Elf_Internal_Rela *dst)
 ft32_info_to_howto_rela (bfd *abfd,
                          arelent *cache_ptr,
                          Elf_Internal_Rela *dst)
@@ -305,7 +304,7 @@ ft32_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
                          abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
                          abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = & ft32_elf_howto_table [r_type];
     }
 
   cache_ptr->howto = & ft32_elf_howto_table [r_type];
@@ -342,7 +341,7 @@ ft32_info_to_howto_rela (bfd *abfd,
    section, which means that the addend must be adjusted
    accordingly.  */
 
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 ft32_elf_relocate_section (bfd *output_bfd,
                            struct bfd_link_info *info,
                            bfd *input_bfd,
 ft32_elf_relocate_section (bfd *output_bfd,
                            struct bfd_link_info *info,
                            bfd *input_bfd,
@@ -392,7 +391,7 @@ ft32_elf_relocate_section (bfd *output_bfd,
        }
       else
        {
        }
       else
        {
-         bfd_boolean unresolved_reloc, warned, ignored;
+         bool unresolved_reloc, warned, ignored;
 
          RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
                                   r_symndx, symtab_hdr, sym_hashes,
 
          RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
                                   r_symndx, symtab_hdr, sym_hashes,
@@ -486,7 +485,7 @@ ft32_elf_relocate_section (bfd *output_bfd,
 
            case bfd_reloc_undefined:
              (*info->callbacks->undefined_symbol)
 
            case bfd_reloc_undefined:
              (*info->callbacks->undefined_symbol)
-               (info, name, input_bfd, input_section, rel->r_offset, TRUE);
+               (info, name, input_bfd, input_section, rel->r_offset, true);
              break;
 
            case bfd_reloc_outofrange:
              break;
 
            case bfd_reloc_outofrange:
@@ -512,12 +511,12 @@ ft32_elf_relocate_section (bfd *output_bfd,
        }
     }
 
        }
     }
 
-  return TRUE;
+  return true;
 }
 \f
 /* Relaxation.  */
 
 }
 \f
 /* Relaxation.  */
 
-static bfd_boolean
+static bool
 ft32_reloc_shortable
     (bfd *                 abfd,
      asection *                    sec,
 ft32_reloc_shortable
     (bfd *                 abfd,
      asection *                    sec,
@@ -571,7 +570,7 @@ ft32_reloc_shortable
        /* This appears to be a reference to an undefined
           symbol.  Just ignore it--it will be caught by the
           regular reloc processing.  */
        /* This appears to be a reference to an undefined
           symbol.  Just ignore it--it will be caught by the
           regular reloc processing.  */
-       return FALSE;
+       return false;
 
       symval = (h->root.u.def.value
                + h->root.u.def.section->output_section->vma
 
       symval = (h->root.u.def.value
                + h->root.u.def.section->output_section->vma
@@ -586,7 +585,7 @@ ft32_reloc_shortable
       case R_FT32_20:
       case R_FT32_RELAX:
        if (symval != 0)
       case R_FT32_20:
       case R_FT32_RELAX:
        if (symval != 0)
-         return FALSE;
+         return false;
        insn = bfd_get_32 (abfd, contents + irel->r_offset);
        insn |= ((symval + irel->r_addend) << howto->bitpos) & howto->dst_mask;
        return ft32_shortcode (insn, sc);
        insn = bfd_get_32 (abfd, contents + irel->r_offset);
        insn |= ((symval + irel->r_addend) << howto->bitpos) & howto->dst_mask;
        return ft32_shortcode (insn, sc);
@@ -603,23 +602,23 @@ ft32_reloc_shortable
          {
            switch (insn)
              {
          {
            switch (insn)
              {
-               case 0x00200000: *sc = (3 << 13) | (0  << 9); return TRUE;
-               case 0x00280000: *sc = (3 << 13) | (1  << 9); return TRUE;
-               case 0x00600000: *sc = (3 << 13) | (2  << 9); return TRUE;
-               case 0x00680000: *sc = (3 << 13) | (3  << 9); return TRUE;
-               case 0x00a00000: *sc = (3 << 13) | (4  << 9); return TRUE;
-               case 0x00a80000: *sc = (3 << 13) | (5  << 9); return TRUE;
-               case 0x00e00000: *sc = (3 << 13) | (6  << 9); return TRUE;
-               case 0x00e80000: *sc = (3 << 13) | (7  << 9); return TRUE;
-               case 0x01200000: *sc = (3 << 13) | (8  << 9); return TRUE;
-               case 0x01280000: *sc = (3 << 13) | (9  << 9); return TRUE;
-               case 0x01600000: *sc = (3 << 13) | (10 << 9); return TRUE;
-               case 0x01680000: *sc = (3 << 13) | (11 << 9); return TRUE;
-               case 0x01a00000: *sc = (3 << 13) | (12 << 9); return TRUE;
-               case 0x01a80000: *sc = (3 << 13) | (13 << 9); return TRUE;
-
-               case 0x00300000: *sc = (3 << 13) | (14 << 9); return TRUE;
-               case 0x00340000: *sc = (3 << 13) | (15 << 9); return TRUE;
+               case 0x00200000: *sc = (3 << 13) | (0  << 9); return true;
+               case 0x00280000: *sc = (3 << 13) | (1  << 9); return true;
+               case 0x00600000: *sc = (3 << 13) | (2  << 9); return true;
+               case 0x00680000: *sc = (3 << 13) | (3  << 9); return true;
+               case 0x00a00000: *sc = (3 << 13) | (4  << 9); return true;
+               case 0x00a80000: *sc = (3 << 13) | (5  << 9); return true;
+               case 0x00e00000: *sc = (3 << 13) | (6  << 9); return true;
+               case 0x00e80000: *sc = (3 << 13) | (7  << 9); return true;
+               case 0x01200000: *sc = (3 << 13) | (8  << 9); return true;
+               case 0x01280000: *sc = (3 << 13) | (9  << 9); return true;
+               case 0x01600000: *sc = (3 << 13) | (10 << 9); return true;
+               case 0x01680000: *sc = (3 << 13) | (11 << 9); return true;
+               case 0x01a00000: *sc = (3 << 13) | (12 << 9); return true;
+               case 0x01a80000: *sc = (3 << 13) | (13 << 9); return true;
+
+               case 0x00300000: *sc = (3 << 13) | (14 << 9); return true;
+               case 0x00340000: *sc = (3 << 13) | (15 << 9); return true;
 
                default:
                  break;
 
                default:
                  break;
@@ -630,12 +629,12 @@ ft32_reloc_shortable
       default:
        break;
     }
       default:
        break;
     }
-  return FALSE;
+  return false;
 }
 
 /* Returns whether the relocation type passed is a diff reloc.  */
 
 }
 
 /* Returns whether the relocation type passed is a diff reloc.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_is_diff_reloc (Elf_Internal_Rela *irel)
 {
   return (ELF32_R_TYPE (irel->r_info) == R_FT32_DIFF32);
 elf32_ft32_is_diff_reloc (Elf_Internal_Rela *irel)
 {
   return (ELF32_R_TYPE (irel->r_info) == R_FT32_DIFF32);
@@ -645,7 +644,7 @@ elf32_ft32_is_diff_reloc (Elf_Internal_Rela *irel)
    insn address happens to fall between the two symbols for which this
    diff reloc was emitted.  */
 
    insn address happens to fall between the two symbols for which this
    diff reloc was emitted.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_adjust_diff_reloc_value (bfd *abfd,
                                   struct bfd_section *isec,
                                   Elf_Internal_Rela *irel,
 elf32_ft32_adjust_diff_reloc_value (bfd *abfd,
                                   struct bfd_section *isec,
                                   Elf_Internal_Rela *irel,
@@ -665,7 +664,7 @@ elf32_ft32_adjust_diff_reloc_value (bfd *abfd,
   if (isec_contents == NULL)
     {
       if (! bfd_malloc_and_get_section (abfd, isec, &isec_contents))
   if (isec_contents == NULL)
     {
       if (! bfd_malloc_and_get_section (abfd, isec, &isec_contents))
-       return FALSE;
+       return false;
 
       elf_section_data (isec)->this_hdr.contents = isec_contents;
     }
 
       elf_section_data (isec)->this_hdr.contents = isec_contents;
     }
@@ -680,7 +679,7 @@ elf32_ft32_adjust_diff_reloc_value (bfd *abfd,
       break;
 
     default:
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   /* For a diff reloc sym1 - sym2 the diff at assembly time (x) is written
     }
 
   /* For a diff reloc sym1 - sym2 the diff at assembly time (x) is written
@@ -713,14 +712,14 @@ elf32_ft32_adjust_diff_reloc_value (bfd *abfd,
          break;
 
        default:
          break;
 
        default:
-         return FALSE;
+         return false;
        }
     }
 
        }
     }
 
-  return TRUE;
+  return true;
 }
 
 }
 
-static bfd_boolean
+static bool
 elf32_ft32_adjust_reloc_if_spans_insn (bfd *abfd,
                                      asection *isec,
                                      Elf_Internal_Rela *irel,  bfd_vma symval,
 elf32_ft32_adjust_reloc_if_spans_insn (bfd *abfd,
                                      asection *isec,
                                      Elf_Internal_Rela *irel,  bfd_vma symval,
@@ -735,32 +734,32 @@ elf32_ft32_adjust_reloc_if_spans_insn (bfd *abfd,
                                               symval,
                                               shrinked_insn_address,
                                               count))
                                               symval,
                                               shrinked_insn_address,
                                               count))
-       return FALSE;
+       return false;
     }
   else
     {
       bfd_vma reloc_value = symval + irel->r_addend;
     }
   else
     {
       bfd_vma reloc_value = symval + irel->r_addend;
-      bfd_boolean addend_within_shrink_boundary =
+      bool addend_within_shrink_boundary =
        (reloc_value <= shrink_boundary);
        (reloc_value <= shrink_boundary);
-      bfd_boolean reloc_spans_insn =
+      bool reloc_spans_insn =
        (symval <= shrinked_insn_address
         && reloc_value > shrinked_insn_address
         && addend_within_shrink_boundary);
 
       if (! reloc_spans_insn)
        (symval <= shrinked_insn_address
         && reloc_value > shrinked_insn_address
         && addend_within_shrink_boundary);
 
       if (! reloc_spans_insn)
-       return TRUE;
+       return true;
 
       irel->r_addend -= count;
 
       if (debug_relax)
        printf ("Relocation's addend needed to be fixed \n");
     }
 
       irel->r_addend -= count;
 
       if (debug_relax)
        printf ("Relocation's addend needed to be fixed \n");
     }
-  return TRUE;
+  return true;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_relax_delete_bytes (struct bfd_link_info *link_info, bfd * abfd,
                               asection * sec, bfd_vma addr, int count)
 {
 elf32_ft32_relax_delete_bytes (struct bfd_link_info *link_info, bfd * abfd,
                               asection * sec, bfd_vma addr, int count)
 {
@@ -825,7 +824,7 @@ elf32_ft32_relax_delete_bytes (struct bfd_link_info *link_info, bfd * abfd,
        irel = elf_section_data (isec)->relocs;
        /* PR 12161: Read in the relocs for this section if necessary.  */
        if (irel == NULL)
        irel = elf_section_data (isec)->relocs;
        /* PR 12161: Read in the relocs for this section if necessary.  */
        if (irel == NULL)
-         irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, TRUE);
+         irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, true);
 
        for (irelend = irel + isec->reloc_count; irel < irelend; irel++)
          {
 
        for (irelend = irel + isec->reloc_count; irel < irelend; irel++)
          {
@@ -839,7 +838,7 @@ elf32_ft32_relax_delete_bytes (struct bfd_link_info *link_info, bfd * abfd,
                                                  symtab_hdr->sh_info, 0,
                                                  NULL, NULL, NULL);
                if (isymbuf == NULL)
                                                  symtab_hdr->sh_info, 0,
                                                  NULL, NULL, NULL);
                if (isymbuf == NULL)
-                 return FALSE;
+                 return false;
              }
 
            /* Get the value of the symbol referred to by the reloc.  */
              }
 
            /* Get the value of the symbol referred to by the reloc.  */
@@ -886,7 +885,7 @@ elf32_ft32_relax_delete_bytes (struct bfd_link_info *link_info, bfd * abfd,
                                                                    shrinked_insn_address,
                                                                    shrink_boundary,
                                                                    count))
                                                                    shrinked_insn_address,
                                                                    shrink_boundary,
                                                                    count))
-                         return FALSE;
+                         return false;
                      }
                  }
                /* else reference symbol is absolute. No adjustment needed. */
                      }
                  }
                /* else reference symbol is absolute. No adjustment needed. */
@@ -952,12 +951,12 @@ elf32_ft32_relax_delete_bytes (struct bfd_link_info *link_info, bfd * abfd,
        sym_hash->root.u.def.value -= count;
     }
 
        sym_hash->root.u.def.value -= count;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if LOC can be a target of a branch, jump or call.  */
 
 }
 
 /* Return TRUE if LOC can be a target of a branch, jump or call.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
                                   bfd * abfd, asection * sec,
                                   bfd_vma loc)
 elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
                                   bfd * abfd, asection * sec,
                                   bfd_vma loc)
@@ -981,7 +980,7 @@ elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
     {
       irel = elf_section_data (isec)->relocs;
       if (irel == NULL)
     {
       irel = elf_section_data (isec)->relocs;
       if (irel == NULL)
-       irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, TRUE);
+       irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, true);
 
       irelend = irel + isec->reloc_count;
 
 
       irelend = irel + isec->reloc_count;
 
@@ -997,7 +996,7 @@ elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
                                                symtab_hdr->sh_info, 0,
                                                NULL, NULL, NULL);
              if (isymbuf == NULL)
                                                symtab_hdr->sh_info, 0,
                                                NULL, NULL, NULL);
              if (isymbuf == NULL)
-               return FALSE;
+               return false;
            }
 
          /* Get the value of the symbol referred to by the reloc.  */
            }
 
          /* Get the value of the symbol referred to by the reloc.  */
@@ -1023,7 +1022,7 @@ elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
                            (unsigned int) symval,
                            (unsigned int) (symval + irel->r_addend));
                  if ((irel->r_addend) == loc)
                            (unsigned int) symval,
                            (unsigned int) (symval + irel->r_addend));
                  if ((irel->r_addend) == loc)
-                   return TRUE;
+                   return true;
                }
            }
        }
                }
            }
        }
@@ -1066,18 +1065,17 @@ elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
          || sym_hash->root.type == bfd_link_hash_defweak)
          && sym_hash->root.u.def.section == sec
          && sym_hash->root.u.def.value == loc)
          || sym_hash->root.type == bfd_link_hash_defweak)
          && sym_hash->root.u.def.section == sec
          && sym_hash->root.u.def.value == loc)
-       return TRUE;
+       return true;
     }
 
     }
 
-  return FALSE;
+  return false;
 }
 
 }
 
-static bfd_boolean
-ft32_elf_relax_section
-    (bfd *                 abfd,
-     asection *                    sec,
-     struct bfd_link_info * link_info,
-     bfd_boolean *         again)
+static bool
+ft32_elf_relax_section (bfd *abfd,
+                       asection *sec,
+                       struct bfd_link_info *link_info,
+                       bool *again)
 {
   Elf_Internal_Rela * free_relocs = NULL;
   Elf_Internal_Rela * internal_relocs;
 {
   Elf_Internal_Rela * free_relocs = NULL;
   Elf_Internal_Rela * internal_relocs;
@@ -1088,16 +1086,17 @@ ft32_elf_relax_section
   Elf_Internal_Sym *  isymbuf = NULL;
 
   /* Assume nothing changes.  */
   Elf_Internal_Sym *  isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   /* Get the section contents.  */
   if (elf_section_data (sec)->this_hdr.contents != NULL)
 
   /* Get the section contents.  */
   if (elf_section_data (sec)->this_hdr.contents != NULL)
@@ -1198,7 +1197,7 @@ ft32_elf_relax_section
 
          /* That will change things, so, we should relax again.
             Note that this is not required, and it may be slow.  */
 
          /* That will change things, so, we should relax again.
             Note that this is not required, and it may be slow.  */
-         *again = TRUE;
+         *again = true;
 
          irel += 2;
        }
 
          irel += 2;
        }
@@ -1232,12 +1231,12 @@ ft32_elf_relax_section
   if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
-  return TRUE;
+  return true;
 
  error_return:
   free (free_relocs);
 
 
  error_return:
   free (free_relocs);
 
-  return TRUE;
+  return true;
 }
 \f
 #define ELF_ARCH               bfd_arch_ft32
 }
 \f
 #define ELF_ARCH               bfd_arch_ft32