/* ft32-specific support for 32-bit ELF.
- Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ Copyright (C) 2013-2022 Free Software Foundation, Inc.
Copied from elf32-moxie.c which is..
- Copyright (C) 2009-2017 Free Software Foundation, Inc.
+ Copyright (C) 2009-2022 Free Software Foundation, Inc.
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
#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 *,
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_FT32_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. */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_16, /* 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_FT32_16", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x0000ffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_8, /* type */
0, /* rightshift */
0, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x000000ff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_10, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x00003ff0, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_20, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x000fffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_17, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x0001ffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_18, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x0003ffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_RELAX, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x00000000, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_SC0, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ "R_FT32_SC0", /* name */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x00000000, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_SC1, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- TRUE, /* partial_inplace */
+ "R_FT32_SC1", /* name */
+ true, /* partial_inplace */
0x07ffff80, /* src_mask */
0x07ffff80, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_FT32_15, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
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 */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x00000000, /* src_mask */
0x00007fff, /* dst_mask */
- FALSE), /* pcrel_offset */
- HOWTO (R_FT32_DIFF32, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
+ false), /* pcrel_offset */
+ HOWTO (R_FT32_DIFF32, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_ft32_diff_reloc, /* special_function */
- "R_FT32_DIFF32", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ "R_FT32_DIFF32", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ false), /* pcrel_offset */
};
\f
\f
static const struct ft32_reloc_map ft32_reloc_map [] =
{
- { BFD_RELOC_NONE, R_FT32_NONE },
- { BFD_RELOC_32, R_FT32_32 },
- { BFD_RELOC_16, R_FT32_16 },
- { BFD_RELOC_8, R_FT32_8 },
- { BFD_RELOC_FT32_10, R_FT32_10 },
- { BFD_RELOC_FT32_20, R_FT32_20 },
- { BFD_RELOC_FT32_17, R_FT32_17 },
- { BFD_RELOC_FT32_18, R_FT32_18 },
- { BFD_RELOC_FT32_RELAX, R_FT32_RELAX },
- { BFD_RELOC_FT32_SC0, R_FT32_SC0 },
- { BFD_RELOC_FT32_SC1, R_FT32_SC1 },
- { BFD_RELOC_FT32_15, R_FT32_15 },
- { BFD_RELOC_FT32_DIFF32, R_FT32_DIFF32 },
+ { BFD_RELOC_NONE, R_FT32_NONE },
+ { BFD_RELOC_32, R_FT32_32 },
+ { BFD_RELOC_16, R_FT32_16 },
+ { BFD_RELOC_8, R_FT32_8 },
+ { BFD_RELOC_FT32_10, R_FT32_10 },
+ { BFD_RELOC_FT32_20, R_FT32_20 },
+ { BFD_RELOC_FT32_17, R_FT32_17 },
+ { BFD_RELOC_FT32_18, R_FT32_18 },
+ { BFD_RELOC_FT32_RELAX, R_FT32_RELAX },
+ { BFD_RELOC_FT32_SC0, R_FT32_SC0 },
+ { BFD_RELOC_FT32_SC1, R_FT32_SC1 },
+ { BFD_RELOC_FT32_15, R_FT32_15 },
+ { BFD_RELOC_FT32_DIFF32, R_FT32_DIFF32 },
};
/* Perform a diff relocation. Nothing to do, as the difference value is
{
unsigned int i;
- for (i = sizeof (ft32_reloc_map) / sizeof (ft32_reloc_map[0]);
- --i;)
+ for (i = 0; i < sizeof (ft32_reloc_map) / sizeof (ft32_reloc_map[0]); i++)
if (ft32_reloc_map [i].bfd_reloc_val == code)
return & ft32_elf_howto_table [ft32_reloc_map[i].ft32_reloc_val];
/* Set the howto pointer for an FT32 ELF reloc. */
-static void
-ft32_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
+static bool
+ft32_info_to_howto_rela (bfd *abfd,
arelent *cache_ptr,
Elf_Internal_Rela *dst)
{
unsigned int r_type;
r_type = ELF32_R_TYPE (dst->r_info);
- BFD_ASSERT (r_type < (unsigned int) R_FT32_max);
+ if (r_type >= (unsigned int) R_FT32_max)
+ {
+ /* xgettext:c-format */
+ _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+ abfd, r_type);
+ bfd_set_error (bfd_error_bad_value);
+ return false;
+ }
+
cache_ptr->howto = & ft32_elf_howto_table [r_type];
+ return cache_ptr->howto != NULL;
}
/* Relocate an FT32 ELF section.
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,
name = bfd_elf_string_from_elf_section
(input_bfd, symtab_hdr->sh_link, sym->st_name);
- name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+ name = name == NULL ? bfd_section_name (sec) : name;
}
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,
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:
}
}
- return TRUE;
+ return true;
}
\f
/* Relaxation. */
-static bfd_boolean
+static bool
ft32_reloc_shortable
- (bfd * abfd,
- asection * sec,
- Elf_Internal_Sym * isymbuf ATTRIBUTE_UNUSED,
- bfd_byte * contents,
- bfd_vma pc ATTRIBUTE_UNUSED,
+ (bfd * abfd,
+ asection * sec,
+ Elf_Internal_Sym * isymbuf ATTRIBUTE_UNUSED,
+ bfd_byte * contents,
+ bfd_vma pc ATTRIBUTE_UNUSED,
Elf_Internal_Rela * irel,
- unsigned int * sc)
+ unsigned int * sc)
{
Elf_Internal_Shdr *symtab_hdr ATTRIBUTE_UNUSED;
bfd_vma symval;
/* 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
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);
{
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;
}
- return FALSE;
+ return false;
}
/* 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);
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,
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;
}
break;
default:
- return FALSE;
+ return false;
}
/* For a diff reloc sym1 - sym2 the diff at assembly time (x) is written
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,
if (elf32_ft32_is_diff_reloc (irel))
{
if (!elf32_ft32_adjust_diff_reloc_value (abfd, isec, irel,
- symval,
- shrinked_insn_address,
- count))
- return FALSE;
+ symval,
+ shrinked_insn_address,
+ count))
+ return false;
}
else
{
bfd_vma reloc_value = symval + irel->r_addend;
- bfd_boolean addend_within_shrink_boundary =
+ bool addend_within_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)
- return TRUE;
+ return true;
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. */
-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)
{
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++)
{
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. */
printf
("Relocation's addend needed to be fixed \n");
- if (!elf32_ft32_adjust_reloc_if_spans_insn (abfd, isec,
- irel, symval,
- shrinked_insn_address,
- shrink_boundary,
- count))
- return FALSE;
+ if (!elf32_ft32_adjust_reloc_if_spans_insn (abfd, isec,
+ irel, symval,
+ shrinked_insn_address,
+ shrink_boundary,
+ count))
+ return false;
}
}
/* else reference symbol is absolute. No adjustment needed. */
struct elf_link_hash_entry *sym_hash = *sym_hashes;
/* The '--wrap SYMBOL' option is causing a pain when the object file,
- containing the definition of __wrap_SYMBOL, includes a direct
- call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
- the same symbol (which is __wrap_SYMBOL), but still exist as two
- different symbols in 'sym_hashes', we don't want to adjust
- the global symbol __wrap_SYMBOL twice.
- This check is only relevant when symbols are being wrapped. */
+ containing the definition of __wrap_SYMBOL, includes a direct
+ call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
+ the same symbol (which is __wrap_SYMBOL), but still exist as two
+ different symbols in 'sym_hashes', we don't want to adjust
+ the global symbol __wrap_SYMBOL twice.
+ This check is only relevant when symbols are being wrapped. */
if (link_info->wrap_hash != NULL)
{
struct elf_link_hash_entry **cur_sym_hashes;
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. */
-static bfd_boolean
+static bool
elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
bfd * abfd, asection * sec,
bfd_vma loc)
{
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;
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. */
if (sym_sec == sec)
{
symval += sym_sec->output_section->vma
- + sym_sec->output_offset;
+ + sym_sec->output_offset;
if (debug_relax)
printf ("0x%x: Address of anchor symbol: 0x%x "
(unsigned int) symval,
(unsigned int) (symval + irel->r_addend));
if ((irel->r_addend) == loc)
- return TRUE;
+ return true;
}
}
}
|| 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 * irelend;
Elf_Internal_Rela * irel;
- bfd_byte * contents = NULL;
+ bfd_byte * contents = NULL;
Elf_Internal_Shdr * symtab_hdr;
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
|| (sec->flags & SEC_RELOC) == 0
|| sec->reloc_count == 0
|| (sec->flags & SEC_CODE) == 0)
- return TRUE;
+ return true;
/* Get the section contents. */
if (elf_section_data (sec)->this_hdr.contents != NULL)
if (ELF32_R_TYPE (irel->r_info) == R_FT32_18)
{
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
- R_FT32_SC0);
+ R_FT32_SC0);
}
else
{
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
- R_FT32_NONE);
+ R_FT32_NONE);
}
if (ELF32_R_TYPE (irel_next->r_info) == R_FT32_18)
/* 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;
}
}
- if (internal_relocs != NULL
- && elf_section_data (sec)->relocs != internal_relocs)
+ if (elf_section_data (sec)->relocs != internal_relocs)
free (internal_relocs);
- return TRUE;
+ return true;
error_return:
- if (free_relocs != NULL)
- free (free_relocs);
+ free (free_relocs);
- return TRUE;
+ return true;
}
\f
#define ELF_ARCH bfd_arch_ft32