/* NDS32-specific support for 32-bit ELF.
- Copyright (C) 2012-2018 Free Software Foundation, Inc.
+ Copyright (C) 2012-2019 Free Software Foundation, Inc.
Contributed by Andes Technology Corporation.
This file is part of BFD, the Binary File Descriptor library.
#include "sysdep.h"
#include "bfd.h"
-#include "bfd_stdint.h"
#include "bfdlink.h"
#include "libbfd.h"
#include "elf-bfd.h"
#include "libiberty.h"
-#include "bfd_stdint.h"
#include "elf/nds32.h"
#include "opcode/nds32.h"
#include "elf32-nds32.h"
/* Patch tag. */
-/* Reserve space for COUNT dynamic relocations in relocation selection
- SRELOC. */
-
-static inline void
-elf32_nds32_allocate_dynrelocs (struct bfd_link_info *info, asection *sreloc,
- bfd_size_type count)
-{
- BFD_ASSERT (elf_hash_table (info)->dynamic_sections_created);
- if (sreloc == NULL)
- abort ();
- sreloc->size += sizeof (Elf32_External_Rela) * count;
-}
-
static reloc_howto_type *
bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
const char *r_name)
return (x & 0x0000003f);
}
+#if !HAVE_FLS
static unsigned int
fls (register unsigned int x)
{
return ffs (x & (-x));
}
+#endif /* !HAVE_FLS */
#define nds32_elf_local_tlsdesc_gotent(bfd) \
(elf_nds32_tdata (bfd)->local_tlsdesc_gotent)
if (h->dynindx == -1)
{
_bfd_error_handler
- (_("%pB: relocation %s against `%s' can not be used when"
+ (_("%pB: relocation %s against `%s' can not be used when "
"making a shared object; recompile with -fPIC"),
input_bfd, nds32_elf_howto_table[r_type].name, h->root.root.string);
bfd_set_error (bfd_error_bad_value);
/* Store the machine number in the flags field. */
-static void
-nds32_elf_final_write_processing (bfd *abfd,
- bfd_boolean linker ATTRIBUTE_UNUSED)
+static bfd_boolean
+nds32_elf_final_write_processing (bfd *abfd)
{
unsigned long val;
static unsigned int cur_mach = 0;
elf_elfheader (abfd)->e_flags &= ~EF_NDS_ARCH;
elf_elfheader (abfd)->e_flags |= val;
+ return _bfd_elf_final_write_processing (abfd);
}
/* Function to keep NDS32 specific file flags. */
symbol = *(*parent)->sym_ptr_ptr;
if (symbol->section && discarded_section (symbol->section))
{
- bfd_byte *p;
+ bfd_vma off;
static reloc_howto_type none_howto
= HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
"unused", FALSE, 0, 0, FALSE);
- p = data + (*parent)->address * bfd_octets_per_byte (input_bfd);
- _bfd_clear_contents ((*parent)->howto, input_bfd, input_section,
- p);
+ off = (*parent)->address * bfd_octets_per_byte (input_bfd);
+ _bfd_clear_contents ((*parent)->howto, input_bfd,
+ input_section, data, off);
(*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
(*parent)->addend = 0;
(*parent)->howto = &none_howto;