Automatic date update in version.in
[binutils-gdb.git] / bfd / elf32-tilepro.c
index 2d78f3c9c89c1ef0c0e372af28d40156f2608cab..2495539c7f7f153aa3fdb32fce4db7c793592dee 100644 (file)
@@ -1,5 +1,5 @@
 /* TILEPro-specific support for 32-bit ELF.
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2022 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -36,135 +36,135 @@ static reloc_howto_type tilepro_elf_howto_table [] =
         0,                     /* rightshift */
         3,                     /* size (0 = byte, 1 = short, 2 = long) */
         0,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_NONE",      /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_TILEPRO_32, /* type */
         0,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         32,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_32",        /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffffffff,            /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_TILEPRO_16, /* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_16",        /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffff,                /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_TILEPRO_8,  /* type */
         0,                     /* rightshift */
         0,                     /* size (0 = byte, 1 = short, 2 = long) */
         8,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_unsigned, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_8", /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xff,                  /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* A 32 bit pc-relative relocation.  */
   HOWTO (R_TILEPRO_32_PCREL,/* type */
         0,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         32,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_32_PCREL", /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffffffff,            /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* A 16 bit pc-relative relocation.  */
   HOWTO (R_TILEPRO_16_PCREL,/* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_16_PCREL",  /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffff,                /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* An 8 bit pc-relative relocation.  */
   HOWTO (R_TILEPRO_8_PCREL,    /* type */
         0,                     /* rightshift */
         0,                     /* size (0 = byte, 1 = short, 2 = long) */
         8,                     /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_8_PCREL",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xff,                  /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* A 16 bit relocation without overflow.  */
   HOWTO (R_TILEPRO_LO16,       /* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont,/* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_LO16",      /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffff,                /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* The high order 16 bits of an address.  */
   HOWTO (R_TILEPRO_HI16,       /* type */
         16,                    /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_HI16",      /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffff,                /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* The high order 16 bits of an address, plus 1 if the contents of
      the low 16 bits, treated as a signed number, is negative.  */
@@ -172,123 +172,123 @@ static reloc_howto_type tilepro_elf_howto_table [] =
         16,                    /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_HA16",  /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffff,                /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_TILEPRO_COPY,               /* type */
         0,                     /* rightshift */
         0,                     /* size (0 = byte, 1 = short, 2 = long) */
         0,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_COPY",              /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_GLOB_DAT,   /* type */
         0,                     /* rightshift */
         0,                     /* size (0 = byte, 1 = short, 2 = long) */
         0,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_GLOB_DAT",  /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_JMP_SLOT,   /* type */
         0,                     /* rightshift */
         0,                     /* size (0 = byte, 1 = short, 2 = long) */
         0,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_JMP_SLOT",  /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_RELATIVE,   /* type */
         0,                     /* rightshift */
         0,                     /* size (0 = byte, 1 = short, 2 = long) */
         0,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_RELATIVE",  /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_BROFF_X1, /* type */
         TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         17,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_BROFF_X1", /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_JOFFLONG_X1, /* type */
         TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         29,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed,/* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_JOFFLONG_X1", /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_JOFFLONG_X1_PLT, /* type */
         TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         29,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed,/* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_JOFFLONG_X1_PLT", /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
 #define TILEPRO_IMM_HOWTO(name, size, bitsize) \
-  HOWTO (name, 0, size, bitsize, FALSE, 0, \
+  HOWTO (name, 0, size, bitsize, false, 0, \
         complain_overflow_signed, bfd_elf_generic_reloc, \
-        #name, FALSE, 0, -1, FALSE)
+        #name, false, 0, -1, false)
 
 #define TILEPRO_UIMM_HOWTO(name, size, bitsize) \
-  HOWTO (name, 0, size, bitsize, FALSE, 0, \
+  HOWTO (name, 0, size, bitsize, false, 0, \
         complain_overflow_unsigned, bfd_elf_generic_reloc, \
-        #name, FALSE, 0, -1, FALSE)
+        #name, false, 0, -1, false)
 
   TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X0,  0,  8),
   TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y0,  0,  8),
@@ -300,9 +300,9 @@ static reloc_howto_type tilepro_elf_howto_table [] =
   TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X1, 1, 16),
 
 #define TILEPRO_IMM16_HOWTO(name, rshift) \
-  HOWTO (name, rshift, 1, 16, FALSE, 0, \
+  HOWTO (name, rshift, 1, 16, false, 0, \
         complain_overflow_dont, bfd_elf_generic_reloc, \
-        #name, FALSE, 0, 0xffff, FALSE)
+        #name, false, 0, 0xffff, false)
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_LO,  0),
@@ -317,34 +317,34 @@ static reloc_howto_type tilepro_elf_howto_table [] =
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X0_PCREL",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_PCREL,     /* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X1_PCREL",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
 #define TILEPRO_IMM16_HOWTO_PCREL(name, rshift) \
-  HOWTO (name, rshift, 1, 16, TRUE, 0, \
+  HOWTO (name, rshift, 1, 16, true, 0, \
         complain_overflow_dont, bfd_elf_generic_reloc, \
-        #name, FALSE, 0, 0xffff, TRUE)
+        #name, false, 0, 0xffff, true)
 
   TILEPRO_IMM16_HOWTO_PCREL (R_TILEPRO_IMM16_X0_LO_PCREL,  0),
   TILEPRO_IMM16_HOWTO_PCREL (R_TILEPRO_IMM16_X1_LO_PCREL,  0),
@@ -385,15 +385,15 @@ static reloc_howto_type tilepro_elf_howto_table [] =
         TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         29,                    /* bitsize */
-        TRUE,                  /* pc_relative */
+        true,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed,/* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_TLS_GD_CALL", /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X0_TLS_GD_ADD,  0,  8),
   TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X1_TLS_GD_ADD,  0,  8),
@@ -407,29 +407,29 @@ static reloc_howto_type tilepro_elf_howto_table [] =
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X0_TLS_GD",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffff,                /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_TLS_GD,/* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X1_TLS_GD",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffff,                /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_GD_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_GD_LO,  0),
@@ -444,29 +444,29 @@ static reloc_howto_type tilepro_elf_howto_table [] =
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X0_TLS_IE",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_TLS_IE,/* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X1_TLS_IE",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_IE_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_IE_LO,  0),
@@ -476,43 +476,43 @@ static reloc_howto_type tilepro_elf_howto_table [] =
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_IE_HA, 16),
 
   /* These are common with the Solaris TLS implementation. */
-  HOWTO(R_TILEPRO_TLS_DTPMOD32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO(R_TILEPRO_TLS_DTPMOD32, 0, 0, 0, false, 0, complain_overflow_dont,
        bfd_elf_generic_reloc, "R_TILEPRO_TLS_DTPMOD32",
-       FALSE, 0, 0, TRUE),
-  HOWTO(R_TILEPRO_TLS_DTPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+       false, 0, 0, true),
+  HOWTO(R_TILEPRO_TLS_DTPOFF32, 0, 2, 32, false, 0, complain_overflow_bitfield,
        bfd_elf_generic_reloc, "R_TILEPRO_TLS_DTPOFF32",
-       FALSE, 0, 0xFFFFFFFF, TRUE),
-  HOWTO(R_TILEPRO_TLS_TPOFF32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+       false, 0, 0xFFFFFFFF, true),
+  HOWTO(R_TILEPRO_TLS_TPOFF32, 0, 0, 0, false, 0, complain_overflow_dont,
        bfd_elf_generic_reloc, "R_TILEPRO_TLS_TPOFF32",
-       FALSE, 0, 0, TRUE),
+       false, 0, 0, true),
 
   HOWTO (R_TILEPRO_IMM16_X0_TLS_LE,/* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X0_TLS_LE",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_TLS_LE,/* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
         "R_TILEPRO_IMM16_X1_TLS_LE",/* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         -1,                    /* dst_mask */
-        TRUE),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_LE_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_LE_LO,  0),
@@ -529,30 +529,30 @@ static reloc_howto_type tilepro_elf_howto_table2 [] =
         0,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         0,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         NULL,                  /* special_function */
         "R_TILEPRO_GNU_VTINHERIT", /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_TILEPRO_GNU_VTENTRY,            /* type */
         0,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         0,                     /* bitsize */
-        FALSE,                 /* pc_relative */
+        false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
         "R_TILEPRO_GNU_VTENTRY",   /* name */
-        FALSE,                 /* partial_inplace */
+        false,                 /* partial_inplace */
         0,                     /* src_mask */
         0,                     /* dst_mask */
-        FALSE),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
 };
 \f
@@ -716,7 +716,7 @@ struct _bfd_tilepro_elf_obj_tdata
 
 /* Allocate TILEPro ELF private object data.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_mkobject (bfd *abfd)
 {
   return bfd_elf_allocate_object (abfd,
@@ -727,19 +727,11 @@ tilepro_elf_mkobject (bfd *abfd)
 #include "elf/common.h"
 #include "elf/internal.h"
 
-struct tilepro_elf_link_hash_table
-{
-  struct elf_link_hash_table elf;
-
-  /* Small local sym to section mapping cache.  */
-  struct sym_cache sym_cache;
-};
-
 /* Get the Tilepro ELF linker hash table from a link_info structure.  */
 #define tilepro_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == TILEPRO_ELF_DATA \
-  ? ((struct tilepro_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)                                      \
+    && elf_hash_table_id (elf_hash_table (p)) == TILEPRO_ELF_DATA)     \
+   ? (struct elf_link_hash_table *) (p)->hash : NULL)
 
 static reloc_howto_type *
 tilepro_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
@@ -780,7 +772,7 @@ tilepro_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 
 /* Set the howto pointer for an TILEPro ELF reloc.  */
 
-static bfd_boolean
+static bool
 tilepro_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
                            arelent * cache_ptr,
                            Elf_Internal_Rela * dst)
@@ -800,9 +792,9 @@ tilepro_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
                          abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 typedef tilepro_bundle_bits (*tilepro_create_func)(int);
@@ -915,14 +907,14 @@ static const tilepro_create_func reloc_to_create_func[] =
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
   size_t size;
 
   if (note->descsz != TILEPRO_PRSTATUS_SIZEOF)
-    return FALSE;
+    return false;
 
   /* pr_cursig */
   elf_tdata (abfd)->core->signal =
@@ -941,11 +933,11 @@ tilepro_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
                                          size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 tilepro_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz != TILEPRO_PRPSINFO_SIZEOF)
-    return FALSE;
+    return false;
 
   elf_tdata (abfd)->core->program
     = _bfd_elfcore_strndup (abfd,
@@ -968,7 +960,7 @@ tilepro_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1113,7 +1105,7 @@ tilepro_plt_entry_build (asection *splt, asection *sgotplt, bfd_vma offset,
   bfd_signed_vma dist_got0 = dist_got_entry - got_offset;
 
   /* Check whether we can use the short plt entry with 16-bit offset.  */
-  bfd_boolean short_plt_entry =
+  bool short_plt_entry =
     (dist_got_entry <= 0x7fff && dist_got0 >= -0x8000);
 
   /* Copy the plt entry template.  */
@@ -1184,14 +1176,14 @@ link_hash_newfunc (struct bfd_hash_entry *entry,
 static struct bfd_link_hash_table *
 tilepro_elf_link_hash_table_create (bfd *abfd)
 {
-  struct tilepro_elf_link_hash_table *ret;
-  size_t amt = sizeof (struct tilepro_elf_link_hash_table);
+  struct elf_link_hash_table *ret;
+  size_t amt = sizeof (struct elf_link_hash_table);
 
-  ret = (struct tilepro_elf_link_hash_table *) bfd_zmalloc (amt);
+  ret = (struct elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
     return NULL;
 
-  if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
+  if (!_bfd_elf_link_hash_table_init (ret, abfd, link_hash_newfunc,
                                      sizeof (struct tilepro_elf_link_hash_entry),
                                      TILEPRO_ELF_DATA))
     {
@@ -1199,12 +1191,12 @@ tilepro_elf_link_hash_table_create (bfd *abfd)
       return NULL;
     }
 
-  return &ret->elf.root;
+  return &ret->root;
 }
 
 /* Create the .got section.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -1215,7 +1207,7 @@ tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 
   /* This function may be called more than once.  */
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
 
@@ -1226,13 +1218,13 @@ tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
                                    | SEC_READONLY));
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->srelgot = s;
 
   s = s_got = bfd_make_section_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->sgot = s;
 
   /* The first bit of the global offset table is the header.  */
@@ -1243,7 +1235,7 @@ tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
          || !bfd_set_section_alignment (s, bed->s->log_file_align))
-       return FALSE;
+       return false;
       htab->sgotplt = s;
 
       /* Reserve room for the header.  */
@@ -1260,22 +1252,22 @@ tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
                                       "_GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-       return FALSE;
+       return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
    .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
    hash table.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_create_dynamic_sections (bfd *dynobj,
                                     struct bfd_link_info *info)
 {
   if (!tilepro_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   return _bfd_elf_create_dynamic_sections (dynobj, info);
 }
@@ -1398,11 +1390,11 @@ tilepro_elf_tls_transition (struct bfd_link_info *info, int r_type,
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                          asection *sec, const Elf_Internal_Rela *relocs)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
@@ -1411,7 +1403,7 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
   int num_relocs;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = tilepro_elf_hash_table (info);
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -1423,8 +1415,8 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 
   BFD_ASSERT (is_tilepro_elf (abfd) || num_relocs == 0);
 
-  if (htab->elf.dynobj == NULL)
-    htab->elf.dynobj = abfd;
+  if (htab->dynobj == NULL)
+    htab->dynobj = abfd;
 
   rel_end = relocs + num_relocs;
   for (rel = relocs; rel < rel_end; rel++)
@@ -1442,7 +1434,7 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
          /* xgettext:c-format */
          _bfd_error_handler (_("%pB: bad symbol index: %d"),
                              abfd, r_symndx);
-         return FALSE;
+         return false;
        }
 
       if (r_symndx < symtab_hdr->sh_info)
@@ -1531,7 +1523,7 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                    local_got_refcounts = ((bfd_signed_vma *)
                                           bfd_zalloc (abfd, size));
                    if (local_got_refcounts == NULL)
-                     return FALSE;
+                     return false;
                    elf_local_got_refcounts (abfd) = local_got_refcounts;
                    _bfd_tilepro_elf_local_got_tls_type (abfd)
                      = (char *) (local_got_refcounts + symtab_hdr->sh_info);
@@ -1555,7 +1547,7 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                      /* xgettext:c-format */
                      (_("%pB: `%s' accessed both as normal and thread local symbol"),
                       abfd, h ? h->root.root.string : "<local>");
-                   return FALSE;
+                   return false;
                  }
              }
 
@@ -1569,10 +1561,10 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
              }
          }
 
-         if (htab->elf.sgot == NULL)
+         if (htab->sgot == NULL)
            {
-             if (!tilepro_elf_create_got_section (htab->elf.dynobj, info))
-               return FALSE;
+             if (!tilepro_elf_create_got_section (htab->dynobj, info))
+               return false;
            }
          break;
 
@@ -1585,9 +1577,9 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
              if (! _bfd_generic_link_add_one_symbol (info, abfd,
                                                      "__tls_get_addr", 0,
                                                      bfd_und_section_ptr, 0,
-                                                     NULL, FALSE, FALSE,
+                                                     NULL, false, false,
                                                      &bh))
-               return FALSE;
+               return false;
              h = (struct elf_link_hash_entry *) bh;
            }
          else
@@ -1716,10 +1708,10 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
              if (sreloc == NULL)
                {
                  sreloc = _bfd_elf_make_dynamic_reloc_section
-                   (sec, htab->elf.dynobj, 2, abfd, /*rela?*/ TRUE);
+                   (sec, htab->dynobj, 2, abfd, /*rela?*/ true);
 
                  if (sreloc == NULL)
-                   return FALSE;
+                   return false;
                }
 
              /* If this is a global symbol, we count the number of
@@ -1739,7 +1731,7 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
                                                abfd, r_symndx);
                  if (isym == NULL)
-                   return FALSE;
+                   return false;
 
                  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
                  if (s == NULL)
@@ -1754,9 +1746,9 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                {
                  size_t amt = sizeof *p;
                  p = ((struct elf_dyn_relocs *)
-                      bfd_alloc (htab->elf.dynobj, amt));
+                      bfd_alloc (htab->dynobj, amt));
                  if (p == NULL)
-                   return FALSE;
+                   return false;
                  p->next = *head;
                  *head = p;
                  p->sec = sec;
@@ -1773,12 +1765,12 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 
        case R_TILEPRO_GNU_VTINHERIT:
          if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-           return FALSE;
+           return false;
          break;
 
        case R_TILEPRO_GNU_VTENTRY:
          if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-           return FALSE;
+           return false;
          break;
 
        default:
@@ -1786,7 +1778,7 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
        }
     }
 
-  return TRUE;
+  return true;
 }
 
 \f
@@ -1825,8 +1817,8 @@ tilepro_elf_gc_mark_hook (asection *sec,
          if (! _bfd_generic_link_add_one_symbol (info, sec->owner,
                                                  "__tls_get_addr", 0,
                                                  bfd_und_section_ptr,
-                                                 0, NULL, FALSE,
-                                                 FALSE, &bh))
+                                                 0, NULL, false,
+                                                 false, &bh))
            return NULL;
          h = (struct elf_link_hash_entry *) bh;
          BFD_ASSERT (h != NULL);
@@ -1846,18 +1838,18 @@ tilepro_elf_gc_mark_hook (asection *sec,
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
                                   struct elf_link_hash_entry *h)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   asection *s, *srel;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
   /* Make sure we know what is going on here.  */
-  BFD_ASSERT (htab->elf.dynobj != NULL
+  BFD_ASSERT (htab->dynobj != NULL
              && (h->needs_plt
                  || h->is_weakalias
                  || (h->def_dynamic
@@ -1884,7 +1876,7 @@ tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
          h->needs_plt = 0;
        }
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -1898,7 +1890,7 @@ tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1909,18 +1901,18 @@ tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* If we don't find any dynamic relocs in read-only sections, then
@@ -1928,7 +1920,7 @@ tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
   if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -1947,13 +1939,13 @@ tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
      .rel.bss section we are going to use.  */
   if ((h->root.u.def.section->flags & SEC_READONLY) != 0)
     {
-      s = htab->elf.sdynrelro;
-      srel = htab->elf.sreldynrelro;
+      s = htab->sdynrelro;
+      srel = htab->sreldynrelro;
     }
   else
     {
-      s = htab->elf.sdynbss;
-      srel = htab->elf.srelbss;
+      s = htab->sdynbss;
+      srel = htab->srelbss;
     }
   if ((h->root.u.def.section->flags & SEC_ALLOC) != 0 && h->size != 0)
     {
@@ -1967,21 +1959,21 @@ tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
-  if (htab->elf.dynamic_sections_created
+  if (htab->dynamic_sections_created
       && h->plt.refcount > 0)
     {
       /* Make sure this symbol is output as a dynamic symbol.
@@ -1990,12 +1982,12 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
          && !h->forced_local)
        {
          if (! bfd_elf_link_record_dynamic_symbol (info, h))
-           return FALSE;
+           return false;
        }
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
        {
-         asection *s = htab->elf.splt;
+         asection *s = htab->splt;
 
          /* Allocate room for the header.  */
          if (s->size == 0)
@@ -2021,10 +2013,10 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
          s->size += PLT_ENTRY_SIZE;
 
          /* We also need to make an entry in the .got.plt section.  */
-         htab->elf.sgotplt->size += GOT_ENTRY_SIZE;
+         htab->sgotplt->size += GOT_ENTRY_SIZE;
 
          /* We also need to make an entry in the .rela.plt section.  */
-         htab->elf.srelplt->size += TILEPRO_ELF_RELA_BYTES;
+         htab->srelplt->size += TILEPRO_ELF_RELA_BYTES;
        }
       else
        {
@@ -2048,7 +2040,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
   else if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = tilepro_elf_hash_entry(h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -2057,31 +2049,31 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
          && !h->forced_local)
        {
          if (! bfd_elf_link_record_dynamic_symbol (info, h))
-           return FALSE;
+           return false;
        }
 
-      s = htab->elf.sgot;
+      s = htab->sgot;
       h->got.offset = s->size;
       s->size += TILEPRO_BYTES_PER_WORD;
       /* R_TILEPRO_IMM16_Xn_TLS_GD entries need 2 consecutive GOT slots. */
       if (tls_type == GOT_TLS_GD)
        s->size += TILEPRO_BYTES_PER_WORD;
-      dyn = htab->elf.dynamic_sections_created;
+      dyn = htab->dynamic_sections_created;
       /* R_TILEPRO_IMM16_Xn_TLS_IE_xxx needs one dynamic relocation,
         R_TILEPRO_IMM16_Xn_TLS_GD_xxx needs two if local symbol and two if
         global.  */
       if (tls_type == GOT_TLS_GD || tls_type == GOT_TLS_IE)
-       htab->elf.srelgot->size += 2 * TILEPRO_ELF_RELA_BYTES;
+       htab->srelgot->size += 2 * TILEPRO_ELF_RELA_BYTES;
       else if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
                                                bfd_link_pic (info),
                                                h))
-       htab->elf.srelgot->size += TILEPRO_ELF_RELA_BYTES;
+       htab->srelgot->size += TILEPRO_ELF_RELA_BYTES;
     }
   else
     h->got.offset = (bfd_vma) -1;
 
   if (h->dyn_relocs == NULL)
-    return TRUE;
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2121,7 +2113,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
                   && !h->forced_local)
            {
              if (! bfd_elf_link_record_dynamic_symbol (info, h))
-               return FALSE;
+               return false;
            }
        }
     }
@@ -2134,7 +2126,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
       if (!h->non_got_ref
          && ((h->def_dynamic
               && !h->def_regular)
-             || (htab->elf.dynamic_sections_created
+             || (htab->dynamic_sections_created
                  && (h->root.type == bfd_link_hash_undefweak
                      || h->root.type == bfd_link_hash_undefined))))
        {
@@ -2144,7 +2136,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
              && !h->forced_local)
            {
              if (! bfd_elf_link_record_dynamic_symbol (info, h))
-               return FALSE;
+               return false;
            }
 
          /* If that succeeded, we know we'll be keeping all the
@@ -2165,13 +2157,13 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
       sreloc->size += p->count * TILEPRO_ELF_RELA_BYTES;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return true if the dynamic symbol for a given section should be
    omitted when creating a shared library.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_omit_section_dynsym (bfd *output_bfd,
                                    struct bfd_link_info *info,
                                    asection *p)
@@ -2180,7 +2172,7 @@ tilepro_elf_omit_section_dynsym (bfd *output_bfd,
      against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
      can be turned into relocations against the .got symbol.  */
   if (strcmp (p->name, ".got") == 0)
-    return FALSE;
+    return false;
 
   return _bfd_elf_omit_section_dynsym_default (output_bfd, info, p);
 }
@@ -2189,20 +2181,20 @@ tilepro_elf_omit_section_dynsym (bfd *output_bfd,
 
 #define ELF32_DYNAMIC_INTERPRETER "/lib/ld.so.1"
 
-static bfd_boolean
+static bool
 tilepro_elf_size_dynamic_sections (bfd *output_bfd,
                                      struct bfd_link_info *info)
 {
   (void)output_bfd;
 
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
   bfd *ibfd;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
-  dynobj = htab->elf.dynobj;
+  dynobj = htab->dynobj;
   BFD_ASSERT (dynobj != NULL);
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -2268,8 +2260,8 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd,
       locsymcount = symtab_hdr->sh_info;
       end_local_got = local_got + locsymcount;
       local_tls_type = _bfd_tilepro_elf_local_got_tls_type (ibfd);
-      s = htab->elf.sgot;
-      srel = htab->elf.srelgot;
+      s = htab->sgot;
+      srel = htab->srelgot;
       for (; local_got < end_local_got; ++local_got, ++local_tls_type)
        {
          if (*local_got > 0)
@@ -2290,37 +2282,37 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd,
 
   /* Allocate global sym .plt and .got entries, and space for global
      sym dynamic relocs.  */
-  elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info);
+  elf_link_hash_traverse (htab, allocate_dynrelocs, info);
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       /* If the .got section is more than 0x8000 bytes, we add
         0x8000 to the value of _GLOBAL_OFFSET_TABLE_, so that 16
         bit relocations have a greater chance of working. */
-      if (htab->elf.sgot->size >= 0x8000
+      if (htab->sgot->size >= 0x8000
          && elf_hash_table (info)->hgot->root.u.def.value == 0)
        elf_hash_table (info)->hgot->root.u.def.value = 0x8000;
     }
 
-  if (htab->elf.sgotplt)
+  if (htab->sgotplt)
     {
       struct elf_link_hash_entry *got;
       got = elf_link_hash_lookup (elf_hash_table (info),
                                  "_GLOBAL_OFFSET_TABLE_",
-                                 FALSE, FALSE, FALSE);
+                                 false, false, false);
 
       /* Don't allocate .got.plt section if there are no GOT nor PLT
         entries and there is no refeence to _GLOBAL_OFFSET_TABLE_.  */
       if ((got == NULL
           || !got->ref_regular_nonweak)
-         && (htab->elf.sgotplt->size
+         && (htab->sgotplt->size
              == GOTPLT_HEADER_SIZE)
-         && (htab->elf.splt == NULL
-             || htab->elf.splt->size == 0)
-         && (htab->elf.sgot == NULL
-             || (htab->elf.sgot->size
+         && (htab->splt == NULL
+             || htab->splt->size == 0)
+         && (htab->sgot == NULL
+             || (htab->sgot->size
                  == get_elf_backend_data (output_bfd)->got_header_size)))
-       htab->elf.sgotplt->size = 0;
+       htab->sgotplt->size = 0;
     }
 
   /* The check_relocs and adjust_dynamic_symbol entry points have
@@ -2331,16 +2323,16 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd,
       if ((s->flags & SEC_LINKER_CREATED) == 0)
        continue;
 
-      if (s == htab->elf.splt
-         || s == htab->elf.sgot
-         || s == htab->elf.sgotplt
-         || s == htab->elf.sdynbss
-         || s == htab->elf.sdynrelro)
+      if (s == htab->splt
+         || s == htab->sgot
+         || s == htab->sgotplt
+         || s == htab->sdynbss
+         || s == htab->sdynrelro)
        {
          /* Strip this section if we don't need it; see the
             comment below.  */
        }
-      else if (strncmp (s->name, ".rela", 5) == 0)
+      else if (startswith (s->name, ".rela"))
        {
          if (s->size != 0)
            {
@@ -2378,54 +2370,10 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd,
         at the beginning, and we don't want garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-       return FALSE;
+       return false;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-        values later, in tilepro_elf_finish_dynamic_sections, but we
-        must add the entries now so that we get the correct size for
-        the .dynamic section.  The DT_DEBUG entry is filled in by the
-        dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-       {
-         if (!add_dynamic_entry (DT_DEBUG, 0))
-           return FALSE;
-       }
-
-      if (htab->elf.srelplt->size != 0)
-       {
-         if (!add_dynamic_entry (DT_PLTGOT, 0)
-             || !add_dynamic_entry (DT_PLTRELSZ, 0)
-             || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-             || !add_dynamic_entry (DT_JMPREL, 0))
-           return FALSE;
-       }
-
-      if (!add_dynamic_entry (DT_RELA, 0)
-         || !add_dynamic_entry (DT_RELASZ, 0)
-         || !add_dynamic_entry (DT_RELAENT, TILEPRO_ELF_RELA_BYTES))
-       return FALSE;
-
-      /* If any dynamic relocs apply to a read-only section,
-        then we need a DT_TEXTREL entry.  */
-      if ((info->flags & DF_TEXTREL) == 0)
-       elf_link_hash_traverse (&htab->elf,
-                               _bfd_elf_maybe_set_textrel, info);
-
-      if (info->flags & DF_TEXTREL)
-       {
-         if (!add_dynamic_entry (DT_TEXTREL, 0))
-           return FALSE;
-       }
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, true);
 }
 \f
 /* Return the base VMA address which should be subtracted from real addresses
@@ -2564,14 +2512,14 @@ static const bfd_byte insn_tls_gd_add_Y0Y1[] = {
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                              bfd *input_bfd, asection *input_section,
                              bfd_byte *contents, Elf_Internal_Rela *relocs,
                              Elf_Internal_Sym *local_syms,
                              asection **local_sections)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   bfd_vma *local_got_offsets;
@@ -2600,7 +2548,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
   for (; rel < relend; rel++)
     {
       int r_type, tls_type;
-      bfd_boolean is_tls_iele, is_tls_le;
+      bool is_tls_iele, is_tls_le;
       reloc_howto_type *howto;
       unsigned long r_symndx;
       struct elf_link_hash_entry *h;
@@ -2611,9 +2559,9 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
       bfd_reloc_status_type r;
       const char *name;
       bfd_vma off;
-      bfd_boolean is_plt = FALSE;
-      bfd_boolean resolved_to_zero;
-      bfd_boolean unresolved_reloc;
+      bool is_plt = false;
+      bool resolved_to_zero;
+      bool unresolved_reloc;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       if (r_type == R_TILEPRO_GNU_VTINHERIT
@@ -2630,7 +2578,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
        {
          sym = local_syms + r_symndx;
@@ -2639,8 +2587,8 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
        }
       else
        {
-         bfd_boolean warned ATTRIBUTE_UNUSED;
-         bfd_boolean ignored ATTRIBUTE_UNUSED;
+         bool warned ATTRIBUTE_UNUSED;
+         bool ignored ATTRIBUTE_UNUSED;
 
          RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
                                   r_symndx, symtab_hdr, sym_hashes,
@@ -2716,8 +2664,8 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 
              /* GD -> GD */
              h = (struct elf_link_hash_entry *)
-               bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE,
-                                     FALSE, TRUE);
+               bfd_link_hash_lookup (info->hash, "__tls_get_addr", false,
+                                     false, true);
              BFD_ASSERT (h != NULL);
              r_type = R_TILEPRO_JOFFLONG_X1_PLT;
              howto = tilepro_elf_howto_table + r_type;
@@ -2802,12 +2750,12 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
        case R_TILEPRO_IMM16_X1_GOT_HA:
          /* Relocation is to the entry for this symbol in the global
             offset table.  */
-         if (htab->elf.sgot == NULL)
+         if (htab->sgot == NULL)
            abort ();
 
          if (h != NULL)
            {
-             bfd_boolean dyn;
+             bool dyn;
 
              off = h->got.offset;
              BFD_ASSERT (off != (bfd_vma) -1);
@@ -2836,12 +2784,12 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                  else
                    {
                      bfd_put_32 (output_bfd, relocation,
-                                         htab->elf.sgot->contents + off);
+                                         htab->sgot->contents + off);
                      h->got.offset |= 1;
                    }
                }
              else
-               unresolved_reloc = FALSE;
+               unresolved_reloc = false;
            }
          else
            {
@@ -2864,11 +2812,11 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 
                      /* We need to generate a R_TILEPRO_RELATIVE reloc
                         for the dynamic linker.  */
-                     s = htab->elf.srelgot;
+                     s = htab->srelgot;
                      BFD_ASSERT (s != NULL);
 
-                     outrel.r_offset = (htab->elf.sgot->output_section->vma
-                                        + htab->elf.sgot->output_offset
+                     outrel.r_offset = (htab->sgot->output_section->vma
+                                        + htab->sgot->output_offset
                                         + off);
                      outrel.r_info = ELF32_R_INFO (0, R_TILEPRO_RELATIVE);
                      outrel.r_addend = relocation;
@@ -2877,7 +2825,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                    }
 
                  bfd_put_32 (output_bfd, relocation,
-                                     htab->elf.sgot->contents + off);
+                                     htab->sgot->contents + off);
                  local_got_offsets[r_symndx] |= 1;
                }
            }
@@ -2889,7 +2837,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
             procedure linkage table.  */
          BFD_ASSERT (h != NULL);
 
-         if (h->plt.offset == (bfd_vma) -1 || htab->elf.splt == NULL)
+         if (h->plt.offset == (bfd_vma) -1 || htab->splt == NULL)
            {
              /* We didn't make a PLT entry for this symbol.  This
                 happens when statically linking PIC code, or when
@@ -2897,10 +2845,10 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
              break;
            }
 
-         relocation = (htab->elf.splt->output_section->vma
-                       + htab->elf.splt->output_offset
+         relocation = (htab->splt->output_section->vma
+                       + htab->splt->output_offset
                        + h->plt.offset);
-         unresolved_reloc = FALSE;
+         unresolved_reloc = false;
          break;
 
        case R_TILEPRO_32_PCREL:
@@ -2973,7 +2921,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                      || h->root.type == bfd_link_hash_undefined)))
            {
              Elf_Internal_Rela outrel;
-             bfd_boolean skip, relocate = FALSE;
+             bool skip, relocate = false;
 
              /* When generating a shared object, these relocations
                 are copied into the output file to be resolved at run
@@ -2981,15 +2929,15 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 
              BFD_ASSERT (sreloc != NULL);
 
-             skip = FALSE;
+             skip = false;
 
              outrel.r_offset =
                _bfd_elf_section_offset (output_bfd, info, input_section,
                                         rel->r_offset);
              if (outrel.r_offset == (bfd_vma) -1)
-               skip = TRUE;
+               skip = true;
              else if (outrel.r_offset == (bfd_vma) -2)
-               skip = TRUE, relocate = TRUE;
+               skip = true, relocate = true;
              outrel.r_offset += (input_section->output_section->vma
                                  + input_section->output_offset);
 
@@ -3004,7 +2952,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                     FIXME: Add code tracking needed dynamic relocs as
                     e.g. i386 has.  */
                  if (h->dynindx == -1)
-                   skip = TRUE, relocate = TRUE;
+                   skip = true, relocate = true;
                  break;
                }
 
@@ -3037,14 +2985,14 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                      outrel.r_addend = relocation + rel->r_addend;
 
                      if (is_plt)
-                       sec = htab->elf.splt;
+                       sec = htab->splt;
 
                      if (bfd_is_abs_section (sec))
                        indx = 0;
                      else if (sec == NULL || sec->owner == NULL)
                        {
                          bfd_set_error (bfd_error_bad_value);
-                         return FALSE;
+                         return false;
                        }
                      else
                        {
@@ -3060,7 +3008,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 
                          if (indx == 0)
                            {
-                             osec = htab->elf.text_index_section;
+                             osec = htab->text_index_section;
                              indx = elf_section_data (osec)->dynindx;
                            }
 
@@ -3073,7 +3021,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                                (_("%pB: probably compiled without -fPIC?"),
                                 input_bfd);
                              bfd_set_error (bfd_error_bad_value);
-                             return FALSE;
+                             return false;
                            }
                        }
 
@@ -3101,17 +3049,17 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
          if (!bfd_link_executable (info))
            {
              Elf_Internal_Rela outrel;
-             bfd_boolean skip;
+             bool skip;
 
              BFD_ASSERT (sreloc != NULL);
-             skip = FALSE;
+             skip = false;
              outrel.r_offset =
                _bfd_elf_section_offset (output_bfd, info, input_section,
                                         rel->r_offset);
              if (outrel.r_offset == (bfd_vma) -1)
-               skip = TRUE;
+               skip = true;
              else if (outrel.r_offset == (bfd_vma) -2)
-               skip = TRUE;
+               skip = true;
              outrel.r_offset += (input_section->output_section->vma
                                  + input_section->output_offset);
              if (skip)
@@ -3186,7 +3134,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
              local_got_offsets[r_symndx] |= 1;
            }
 
-         if (htab->elf.sgot == NULL)
+         if (htab->sgot == NULL)
            abort ();
 
          if ((off & 1) != 0)
@@ -3195,15 +3143,15 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
            {
              Elf_Internal_Rela outrel;
              int indx = 0;
-             bfd_boolean need_relocs = FALSE;
+             bool need_relocs = false;
 
-             if (htab->elf.srelgot == NULL)
+             if (htab->srelgot == NULL)
                abort ();
 
              if (h != NULL)
              {
-               bfd_boolean dyn;
-               dyn = htab->elf.dynamic_sections_created;
+               bool dyn;
+               dyn = htab->dynamic_sections_created;
 
                if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
                                                     bfd_link_pic (info),
@@ -3221,7 +3169,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                  && (h == NULL
                      || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
                      || h->root.type != bfd_link_hash_undefweak))
-                   need_relocs = TRUE;
+                   need_relocs = true;
 
              switch (r_type)
                {
@@ -3234,18 +3182,18 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                  case R_TILEPRO_IMM16_X0_TLS_IE_HA:
                  case R_TILEPRO_IMM16_X1_TLS_IE_HA:
                    if (need_relocs) {
-                     bfd_put_32 (output_bfd, 0, htab->elf.sgot->contents + off);
-                     outrel.r_offset = (htab->elf.sgot->output_section->vma
-                                      + htab->elf.sgot->output_offset + off);
+                     bfd_put_32 (output_bfd, 0, htab->sgot->contents + off);
+                     outrel.r_offset = (htab->sgot->output_section->vma
+                                      + htab->sgot->output_offset + off);
                      outrel.r_addend = 0;
                      if (indx == 0)
                        outrel.r_addend = relocation - dtpoff_base (info);
                      outrel.r_info = ELF32_R_INFO (indx, R_TILEPRO_TLS_TPOFF32);
-                     tilepro_elf_append_rela_32 (output_bfd, htab->elf.srelgot,
+                     tilepro_elf_append_rela_32 (output_bfd, htab->srelgot,
                                                  &outrel);
                    } else {
                      bfd_put_32 (output_bfd, tpoff (info, relocation),
-                                 htab->elf.sgot->contents + off);
+                                 htab->sgot->contents + off);
                    }
                    break;
 
@@ -3258,31 +3206,31 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                  case R_TILEPRO_IMM16_X0_TLS_GD_HA:
                  case R_TILEPRO_IMM16_X1_TLS_GD_HA:
                    if (need_relocs) {
-                     outrel.r_offset = (htab->elf.sgot->output_section->vma
-                                      + htab->elf.sgot->output_offset + off);
+                     outrel.r_offset = (htab->sgot->output_section->vma
+                                      + htab->sgot->output_offset + off);
                      outrel.r_addend = 0;
                      outrel.r_info = ELF32_R_INFO (indx, R_TILEPRO_TLS_DTPMOD32);
-                     bfd_put_32 (output_bfd, 0, htab->elf.sgot->contents + off);
-                     tilepro_elf_append_rela_32 (output_bfd, htab->elf.srelgot,
+                     bfd_put_32 (output_bfd, 0, htab->sgot->contents + off);
+                     tilepro_elf_append_rela_32 (output_bfd, htab->srelgot,
                                                  &outrel);
                      if (indx == 0)
                        {
                          BFD_ASSERT (! unresolved_reloc);
                          bfd_put_32 (output_bfd,
                                      relocation - dtpoff_base (info),
-                                     (htab->elf.sgot->contents + off +
+                                     (htab->sgot->contents + off +
                                       TILEPRO_BYTES_PER_WORD));
                        }
                      else
                        {
                          bfd_put_32 (output_bfd, 0,
-                                     (htab->elf.sgot->contents + off +
+                                     (htab->sgot->contents + off +
                                       TILEPRO_BYTES_PER_WORD));
                          outrel.r_info = ELF32_R_INFO (indx,
                                                        R_TILEPRO_TLS_DTPOFF32);
                          outrel.r_offset += TILEPRO_BYTES_PER_WORD;
                          tilepro_elf_append_rela_32 (output_bfd,
-                                                     htab->elf.srelgot, &outrel);
+                                                     htab->srelgot, &outrel);
                        }
                    }
 
@@ -3293,9 +3241,9 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                         symbol binding locally.  Mark it as belonging
                         to module 1, the executable.  */
                      bfd_put_32 (output_bfd, 1,
-                                 htab->elf.sgot->contents + off );
+                                 htab->sgot->contents + off );
                      bfd_put_32 (output_bfd, relocation - dtpoff_base (info),
-                                 htab->elf.sgot->contents + off +
+                                 htab->sgot->contents + off +
                                  TILEPRO_BYTES_PER_WORD);
                   }
                   break;
@@ -3306,7 +3254,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
            abort ();
 
          relocation = off - got_base;
-         unresolved_reloc = FALSE;
+         unresolved_reloc = false;
          howto = tilepro_elf_howto_table + r_type;
          break;
 
@@ -3417,7 +3365,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 
            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:
@@ -3443,19 +3391,19 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
        }
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_finish_dynamic_symbol (bfd *output_bfd,
                                   struct bfd_link_info *info,
                                   struct elf_link_hash_entry *h,
                                   Elf_Internal_Sym *sym)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -3475,9 +3423,9 @@ tilepro_elf_finish_dynamic_symbol (bfd *output_bfd,
 
       BFD_ASSERT (h->dynindx != -1);
 
-      splt = htab->elf.splt;
-      srela = htab->elf.srelplt;
-      sgotplt = htab->elf.sgotplt;
+      splt = htab->splt;
+      srela = htab->srelplt;
+      sgotplt = htab->sgotplt;
 
       if (splt == NULL || srela == NULL)
        abort ();
@@ -3525,8 +3473,8 @@ tilepro_elf_finish_dynamic_symbol (bfd *output_bfd,
 
       /* This symbol has an entry in the GOT.  Set it up.  */
 
-      sgot = htab->elf.sgot;
-      srela = htab->elf.srelgot;
+      sgot = htab->sgot;
+      srela = htab->srelgot;
       BFD_ASSERT (sgot != NULL && srela != NULL);
 
       rela.r_offset = (sgot->output_section->vma
@@ -3572,30 +3520,30 @@ tilepro_elf_finish_dynamic_symbol (bfd *output_bfd,
                       + h->root.u.def.section->output_offset);
       rela.r_info = ELF32_R_INFO (h->dynindx, R_TILEPRO_COPY);
       rela.r_addend = 0;
-      if (h->root.u.def.section == htab->elf.sdynrelro)
-       s = htab->elf.sreldynrelro;
+      if (h->root.u.def.section == htab->sdynrelro)
+       s = htab->sreldynrelro;
       else
-       s = htab->elf.srelbss;
+       s = htab->srelbss;
       tilepro_elf_append_rela_32 (output_bfd, s, &rela);
     }
 
   /* Mark some specially defined symbols as absolute. */
-  if (h == htab->elf.hdynamic
-      || (h == htab->elf.hgot || h == htab->elf.hplt))
+  if (h == htab->hdynamic
+      || (h == htab->hgot || h == htab->hplt))
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 tilepro_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
                    bfd *dynobj, asection *sdyn,
                    asection *splt ATTRIBUTE_UNUSED)
 {
   Elf32_External_Dyn *dyncon, *dynconend;
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -3611,15 +3559,15 @@ tilepro_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
       switch (dyn.d_tag)
        {
        case DT_PLTGOT:
-         s = htab->elf.sgotplt;
+         s = htab->sgotplt;
          dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
          break;
        case DT_JMPREL:
-         s = htab->elf.srelplt;
+         s = htab->srelplt;
          dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
          break;
        case DT_PLTRELSZ:
-         s = htab->elf.srelplt;
+         s = htab->srelplt;
          dyn.d_un.d_val = s->size;
          break;
        default:
@@ -3628,29 +3576,29 @@ tilepro_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
 
       bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 tilepro_elf_finish_dynamic_sections (bfd *output_bfd,
                                     struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *sdyn;
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
-  dynobj = htab->elf.dynobj;
+  dynobj = htab->dynobj;
 
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       asection *splt;
-      bfd_boolean ret;
+      bool ret;
 
-      splt = htab->elf.splt;
+      splt = htab->splt;
       BFD_ASSERT (splt != NULL && sdyn != NULL);
 
       ret = tilepro_finish_dyn (output_bfd, info, dynobj, sdyn, splt);
@@ -3671,46 +3619,46 @@ tilepro_elf_finish_dynamic_sections (bfd *output_bfd,
          = PLT_ENTRY_SIZE;
     }
 
-  if (htab->elf.sgotplt)
+  if (htab->sgotplt)
     {
-      if (bfd_is_abs_section (htab->elf.sgotplt->output_section))
+      if (bfd_is_abs_section (htab->sgotplt->output_section))
        {
          _bfd_error_handler
-           (_("discarded output section: `%pA'"), htab->elf.sgotplt);
-         return FALSE;
+           (_("discarded output section: `%pA'"), htab->sgotplt);
+         return false;
        }
 
-      if (htab->elf.sgotplt->size > 0)
+      if (htab->sgotplt->size > 0)
        {
          /* Write the first two entries in .got.plt, needed for the dynamic
             linker.  */
          bfd_put_32 (output_bfd, (bfd_vma) -1,
-                     htab->elf.sgotplt->contents);
+                     htab->sgotplt->contents);
          bfd_put_32 (output_bfd, (bfd_vma) 0,
-                     htab->elf.sgotplt->contents + GOT_ENTRY_SIZE);
+                     htab->sgotplt->contents + GOT_ENTRY_SIZE);
        }
 
-      elf_section_data (htab->elf.sgotplt->output_section)->this_hdr.sh_entsize
+      elf_section_data (htab->sgotplt->output_section)->this_hdr.sh_entsize
        = GOT_ENTRY_SIZE;
     }
 
-  if (htab->elf.sgot)
+  if (htab->sgot)
     {
-      if (htab->elf.sgot->size > 0)
+      if (htab->sgot->size > 0)
        {
          /* Set the first entry in the global offset table to the address of
             the dynamic section.  */
          bfd_vma val = (sdyn ?
                         sdyn->output_section->vma + sdyn->output_offset :
                         0);
-         bfd_put_32 (output_bfd, val, htab->elf.sgot->contents);
+         bfd_put_32 (output_bfd, val, htab->sgot->contents);
        }
 
-      elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize
+      elf_section_data (htab->sgot->output_section)->this_hdr.sh_entsize
        = GOT_ENTRY_SIZE;
     }
 
-  return TRUE;
+  return true;
 }
 
 \f