/* BFD back-end for National Semiconductor's CRX ELF
- Copyright 2004, 2005, 2006, 2007, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2004-2021 Free Software Foundation, Inc.
Written by Tomer Levi, NSC, Israel.
This file is part of BFD, the Binary File Descriptor library.
static reloc_howto_type *elf_crx_reloc_type_lookup
(bfd *, bfd_reloc_code_real_type);
-static void elf_crx_info_to_howto
+static bool elf_crx_info_to_howto
(bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean elf32_crx_relax_delete_bytes
+static bool elf32_crx_relax_delete_bytes
(struct bfd_link_info *, bfd *, asection *, bfd_vma, int);
static bfd_reloc_status_type crx_elf_final_link_relocate
(reloc_howto_type *, bfd *, bfd *, asection *,
bfd_byte *, bfd_vma, bfd_vma, bfd_vma,
struct bfd_link_info *, asection *, int);
-static bfd_boolean elf32_crx_relocate_section
+static int elf32_crx_relocate_section
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
-static bfd_boolean elf32_crx_relax_section
- (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
+static bool elf32_crx_relax_section
+ (bfd *, asection *, struct bfd_link_info *, bool *);
static bfd_byte * elf32_crx_get_relocated_section_contents
(bfd *, struct bfd_link_info *, struct bfd_link_order *,
- bfd_byte *, bfd_boolean, asymbol **);
+ bfd_byte *, bool, asymbol **);
/* crx_reloc_map array maps BFD relocation enum into a CRGAS relocation type. */
{
HOWTO (R_CRX_NONE, /* type */
0, /* rightshift */
- 2, /* size */
- 32, /* bitsize */
- FALSE, /* pc_relative */
+ 3, /* size */
+ 0, /* bitsize */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_NONE", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REL4, /* type */
1, /* rightshift */
0, /* size */
4, /* bitsize */
- TRUE, /* pc_relative */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REL4", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xf, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REL8, /* type */
1, /* rightshift */
0, /* size */
8, /* bitsize */
- TRUE, /* pc_relative */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REL8", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REL8_CMP, /* type */
1, /* rightshift */
0, /* size */
8, /* bitsize */
- TRUE, /* pc_relative */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REL8_CMP", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REL16, /* type */
1, /* rightshift */
1, /* size */
16, /* bitsize */
- TRUE, /* pc_relative */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REL16", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REL24, /* type */
1, /* rightshift */
2, /* size */
24, /* bitsize */
- TRUE, /* pc_relative */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REL24", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REL32, /* type */
1, /* rightshift */
2, /* size */
32, /* bitsize */
- TRUE, /* pc_relative */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REL32", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REGREL12, /* type */
0, /* rightshift */
1, /* size */
12, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REGREL12", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REGREL22, /* type */
0, /* rightshift */
2, /* size */
22, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REGREL22", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0x3fffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REGREL28, /* type */
0, /* rightshift */
2, /* size */
28, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REGREL28", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xfffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_REGREL32, /* type */
0, /* rightshift */
2, /* size */
32, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_REGREL32", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_ABS16, /* type */
0, /* rightshift */
1, /* size */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_ABS16", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_ABS32, /* type */
0, /* rightshift */
2, /* size */
32, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_ABS32", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_NUM8, /* type */
0, /* rightshift */
0, /* size */
8, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_NUM8", /* name */
- FALSE, /* partial_inplace */
- 0x0, /* src_mask */
+ false, /* partial_inplace */
+ 0x0, /* src_mask */
0xff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_NUM16, /* type */
0, /* rightshift */
1, /* size */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_NUM16", /* name */
- FALSE, /* partial_inplace */
- 0x0, /* src_mask */
+ false, /* partial_inplace */
+ 0x0, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_NUM32, /* type */
0, /* rightshift */
2, /* size */
32, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_NUM32", /* name */
- FALSE, /* partial_inplace */
- 0x0, /* src_mask */
+ false, /* partial_inplace */
+ 0x0, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_IMM16, /* type */
0, /* rightshift */
1, /* size */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_IMM16", /* name */
- FALSE, /* partial_inplace */
- 0x0, /* src_mask */
+ false, /* partial_inplace */
+ 0x0, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
HOWTO (R_CRX_IMM32, /* type */
0, /* rightshift */
2, /* size */
32, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_IMM32", /* name */
- FALSE, /* partial_inplace */
- 0x0, /* src_mask */
+ false, /* partial_inplace */
+ 0x0, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
+ false), /* pcrel_offset */
+
/* An 8 bit switch table entry. This is generated for an expression
such as ``.byte L1 - L2''. The offset holds the difference
between the reloc address and L2. */
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_CRX_SWITCH8", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xff, /* dst_mask */
- TRUE), /* pcrel_offset */
+ true), /* pcrel_offset */
/* A 16 bit switch table entry. This is generated for an expression
such as ``.word L1 - L2''. The offset holds the difference
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_unsigned, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_SWITCH16", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffff, /* dst_mask */
- TRUE), /* pcrel_offset */
+ true), /* pcrel_offset */
/* A 32 bit switch table entry. This is generated for an expression
such as ``.long L1 - L2''. The offset holds the difference
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_unsigned, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_CRX_SWITCH32", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0x0, /* src_mask */
0xffffffff, /* dst_mask */
- TRUE) /* pcrel_offset */
+ true) /* pcrel_offset */
};
/* Retrieve a howto ptr using a BFD reloc_code. */
/* Retrieve a howto ptr using an internal relocation entry. */
-static void
-elf_crx_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr,
+static bool
+elf_crx_info_to_howto (bfd *abfd, arelent *cache_ptr,
Elf_Internal_Rela *dst)
{
unsigned int r_type = ELF32_R_TYPE (dst->r_info);
- BFD_ASSERT (r_type < (unsigned int) R_CRX_MAX);
+ if (r_type >= R_CRX_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 = &crx_elf_howto_table[r_type];
+ return true;
}
/* Perform a relocation as part of a final link. */
case R_CRX_SWITCH8:
case R_CRX_SWITCH16:
case R_CRX_SWITCH32:
- /* We only care about the addend, where the difference between
+ /* We only care about the addend, where the difference between
expressions is kept. */
Rvalue = 0;
-
+
default:
break;
}
as signed or unsigned. */
check = Rvalue >> howto->rightshift;
- /* Assumes two's complement. This expression avoids
- overflow if howto->bitsize is the number of bits in
- bfd_vma. */
- reloc_bits = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
+ reloc_bits = ((bfd_vma) 1 << (howto->bitsize - 1) << 1) - 1;
- if (((bfd_vma) check & ~reloc_bits) != 0
- && (((bfd_vma) check & ~reloc_bits)
- != (-(bfd_vma) 1 & ~reloc_bits)))
+ if ((check & ~reloc_bits) != 0
+ && (check & ~reloc_bits) != ((bfd_vma) -1 & ~reloc_bits))
{
/* The above right shift is incorrect for a signed
value. See if turning on the upper bits fixes the
overflow. */
if (howto->rightshift && (bfd_signed_vma) Rvalue < 0)
{
- check |= ((bfd_vma) - 1
- & ~((bfd_vma) - 1
- >> howto->rightshift));
- if (((bfd_vma) check & ~reloc_bits)
- != (-(bfd_vma) 1 & ~reloc_bits))
+ check |= (bfd_vma) -1 & ~((bfd_vma) -1 >> howto->rightshift);
+ if ((check & ~reloc_bits) != ((bfd_vma) -1 & ~reloc_bits))
return bfd_reloc_overflow;
}
else
}
/* Drop unwanted bits from the value we are relocating to. */
- Rvalue >>= (bfd_vma) howto->rightshift;
+ Rvalue >>= howto->rightshift;
/* Apply dst_mask to select only relocatable part of the insn. */
Rvalue &= howto->dst_mask;
/* Delete some bytes from a section while relaxing. */
-static bfd_boolean
-elf32_crx_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
+static bool
+elf32_crx_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
asection *sec, bfd_vma addr, int count)
{
Elf_Internal_Shdr *symtab_hdr;
&& isym->st_value > addr
&& isym->st_value < toaddr)
{
- /* Adjust the addend of SWITCH relocations in this section,
+ /* Adjust the addend of SWITCH relocations in this section,
which reference this local symbol. */
for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
{
{
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.
+ /* 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. */
if (link_info->wrap_hash != NULL)
{
struct elf_link_hash_entry **cur_sym_hashes;
-
+
/* Loop only over the symbols whom been already checked. */
- for (cur_sym_hashes = start_hashes; cur_sym_hashes < sym_hashes;
+ for (cur_sym_hashes = start_hashes; cur_sym_hashes < sym_hashes;
cur_sym_hashes++)
{
- /* If the current symbol is identical to 'sym_hash', that means
+ /* If the current symbol is identical to 'sym_hash', that means
the symbol was already adjusted (or at least checked). */
if (*cur_sym_hashes == sym_hash)
break;
sym_hash->root.u.def.value -= count;
}
- return TRUE;
+ return true;
}
/* This is a version of bfd_generic_get_relocated_section_contents
struct bfd_link_info *link_info,
struct bfd_link_order *link_order,
bfd_byte *data,
- bfd_boolean relocatable,
+ bool relocatable,
asymbol **symbols)
{
Elf_Internal_Shdr *symtab_hdr;
bfd_size_type amt;
internal_relocs = (_bfd_elf_link_read_relocs
- (input_bfd, input_section, (PTR) NULL,
- (Elf_Internal_Rela *) NULL, FALSE));
+ (input_bfd, input_section, NULL,
+ (Elf_Internal_Rela *) NULL, false));
if (internal_relocs == NULL)
goto error_return;
isymbuf, sections))
goto error_return;
- if (sections != NULL)
- free (sections);
- if (isymbuf != NULL
- && symtab_hdr->contents != (unsigned char *) isymbuf)
+ free (sections);
+ if (symtab_hdr->contents != (unsigned char *) isymbuf)
free (isymbuf);
if (elf_section_data (input_section)->relocs != internal_relocs)
free (internal_relocs);
return data;
error_return:
- if (sections != NULL)
- free (sections);
- if (isymbuf != NULL
- && symtab_hdr->contents != (unsigned char *) isymbuf)
+ free (sections);
+ if (symtab_hdr->contents != (unsigned char *) isymbuf)
free (isymbuf);
- if (internal_relocs != NULL
- && elf_section_data (input_section)->relocs != internal_relocs)
+ if (elf_section_data (input_section)->relocs != internal_relocs)
free (internal_relocs);
return NULL;
}
/* Relocate a CRX ELF section. */
-static bfd_boolean
+static int
elf32_crx_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
bfd *input_bfd, asection *input_section,
bfd_byte *contents, Elf_Internal_Rela *relocs,
}
else
{
- bfd_boolean unresolved_reloc, warned;
+ bool unresolved_reloc, warned, ignored;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
h, sec, relocation,
- unresolved_reloc, warned);
+ unresolved_reloc, warned, ignored);
}
- if (sec != NULL && elf_discarded_section (sec))
- {
- /* For relocs against symbols from removed linkonce sections,
- or sections discarded by a linker script, we just want the
- section contents zeroed. Avoid any special processing. */
- _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset);
- rel->r_info = 0;
- rel->r_addend = 0;
- continue;
- }
+ if (sec != NULL && discarded_section (sec))
+ RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+ rel, 1, relend, howto, 0, contents);
- if (info->relocatable)
+ if (bfd_link_relocatable (info))
continue;
r = crx_elf_final_link_relocate (howto, input_bfd, output_bfd,
name = (bfd_elf_string_from_elf_section
(input_bfd, symtab_hdr->sh_link, sym->st_name));
if (name == NULL || *name == '\0')
- name = bfd_section_name (input_bfd, sec);
+ name = bfd_section_name (sec);
}
switch (r)
{
case bfd_reloc_overflow:
- if (!((*info->callbacks->reloc_overflow)
- (info, (h ? &h->root : NULL), name, howto->name,
- (bfd_vma) 0, input_bfd, input_section,
- rel->r_offset)))
- return FALSE;
+ (*info->callbacks->reloc_overflow)
+ (info, (h ? &h->root : NULL), name, howto->name,
+ (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
break;
case bfd_reloc_undefined:
- if (!((*info->callbacks->undefined_symbol)
- (info, name, input_bfd, input_section,
- rel->r_offset, TRUE)))
- return FALSE;
+ (*info->callbacks->undefined_symbol)
+ (info, name, input_bfd, input_section, rel->r_offset, true);
break;
case bfd_reloc_outofrange:
/* Fall through. */
common_error:
- if (!((*info->callbacks->warning)
- (info, msg, name, input_bfd, input_section,
- rel->r_offset)))
- return FALSE;
+ (*info->callbacks->warning) (info, msg, name, input_bfd,
+ input_section, rel->r_offset);
break;
}
}
}
- return TRUE;
+ return true;
}
/* This function handles relaxing for the CRX.
Symbol- and reloc-reading infrastructure copied from elf-m10200.c. */
-static bfd_boolean
+static bool
elf32_crx_relax_section (bfd *abfd, asection *sec,
- struct bfd_link_info *link_info, bfd_boolean *again)
+ struct bfd_link_info *link_info, bool *again)
{
Elf_Internal_Shdr *symtab_hdr;
Elf_Internal_Rela *internal_relocs;
Elf_Internal_Sym *isymbuf = NULL;
/* Assume nothing changes. */
- *again = FALSE;
+ *again = false;
/* We don't have to do anything for a relocatable link, if
this section does not have relocs, or if this is not a
code section. */
- if (link_info->relocatable
+ if (bfd_link_relocatable (link_info)
|| (sec->flags & SEC_RELOC) == 0
|| sec->reloc_count == 0
|| (sec->flags & SEC_CODE) == 0)
- return TRUE;
+ return true;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
/* Get a copy of the native relocations. */
internal_relocs = (_bfd_elf_link_read_relocs
- (abfd, sec, (PTR) NULL, (Elf_Internal_Rela *) NULL,
+ (abfd, sec, NULL, (Elf_Internal_Rela *) NULL,
link_info->keep_memory));
if (internal_relocs == NULL)
goto error_return;
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
- *again = TRUE;
+ *again = true;
}
}
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
- *again = TRUE;
+ *again = true;
}
}
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
- *again = TRUE;
+ *again = true;
}
}
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
- *again = TRUE;
+ *again = true;
}
}
}
}
}
- 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 (isymbuf != NULL
- && symtab_hdr->contents != (unsigned char *) isymbuf)
+ if (symtab_hdr->contents != (unsigned char *) isymbuf)
free (isymbuf);
- if (contents != NULL
- && elf_section_data (sec)->this_hdr.contents != contents)
+ if (elf_section_data (sec)->this_hdr.contents != contents)
free (contents);
- if (internal_relocs != NULL
- && elf_section_data (sec)->relocs != internal_relocs)
+ if (elf_section_data (sec)->relocs != internal_relocs)
free (internal_relocs);
- return FALSE;
+ return false;
}
/* Definitions for setting CRX target vector. */
-#define TARGET_LITTLE_SYM bfd_elf32_crx_vec
+#define TARGET_LITTLE_SYM crx_elf32_vec
#define TARGET_LITTLE_NAME "elf32-crx"
#define ELF_ARCH bfd_arch_crx
#define ELF_MACHINE_CODE EM_CRX
#define bfd_elf32_bfd_reloc_name_lookup \
elf_crx_reloc_name_lookup
#define elf_info_to_howto elf_crx_info_to_howto
-#define elf_info_to_howto_rel 0
+#define elf_info_to_howto_rel NULL
#define elf_backend_relocate_section elf32_crx_relocate_section
#define bfd_elf32_bfd_relax_section elf32_crx_relax_section
#define bfd_elf32_bfd_get_relocated_section_contents \