projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ld: Require GCC 5 for Build pr25749-1b (-pie -fPIE)
[deliverable/binutils-gdb.git]
/
bfd
/
elf32-v850.c
diff --git
a/bfd/elf32-v850.c
b/bfd/elf32-v850.c
index 90a18d3a8d07af7ddfbe9359685db74e16b27bf5..0235044d2de47d79b06b1c656da6e5b7fdab6688 100644
(file)
--- a/
bfd/elf32-v850.c
+++ b/
bfd/elf32-v850.c
@@
-1,5
+1,5
@@
/* V850-specific support for 32-bit ELF
/* V850-specific support for 32-bit ELF
- Copyright (C) 1996-20
19
Free Software Foundation, Inc.
+ Copyright (C) 1996-20
20
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This file is part of BFD, the Binary File Descriptor library.
@@
-29,6
+29,7
@@
#include "elf-bfd.h"
#include "elf/v850.h"
#include "libiberty.h"
#include "elf-bfd.h"
#include "elf/v850.h"
#include "libiberty.h"
+#include "elf32-v850.h"
/* Sign-extend a 17-bit number. */
#define SEXT17(x) ((((x) & 0x1ffff) ^ 0x10000) - 0x10000)
/* Sign-extend a 17-bit number. */
#define SEXT17(x) ((((x) & 0x1ffff) ^ 0x10000) - 0x10000)
@@
-177,7
+178,7
@@
v850_elf_check_relocs (bfd *abfd,
if (h && h->root.type == bfd_link_hash_common
&& h->root.u.c.p
if (h && h->root.type == bfd_link_hash_common
&& h->root.u.c.p
- && !strcmp (bfd_
get_section_name (abfd,
h->root.u.c.p->section), "COMMON"))
+ && !strcmp (bfd_
section_name (
h->root.u.c.p->section), "COMMON"))
{
asection * section;
{
asection * section;
@@
-229,7
+230,7
@@
static void
remember_hi16s_reloc (bfd *abfd, bfd_vma addend, bfd_byte *address)
{
hi16s_location * entry = NULL;
remember_hi16s_reloc (bfd *abfd, bfd_vma addend, bfd_byte *address)
{
hi16s_location * entry = NULL;
-
bfd_size_type
amt = sizeof (* free_hi16s);
+
size_t
amt = sizeof (* free_hi16s);
/* Find a free structure. */
if (free_hi16s == NULL)
/* Find a free structure. */
if (free_hi16s == NULL)
@@
-2269,7
+2270,7
@@
v850_elf_relocate_section (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_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 ((int) r)
}
switch ((int) r)
@@
-2372,11
+2373,11
@@
v850_elf_make_note_section (bfd * abfd)
if (s == NULL)
return NULL;
if (s == NULL)
return NULL;
- if (!bfd_set_section_alignment (
abfd,
s, 2))
+ if (!bfd_set_section_alignment (s, 2))
return NULL;
/* Allocate space for all known notes. */
return NULL;
/* Allocate space for all known notes. */
- if (!bfd_set_section_size (
abfd,
s, NUM_V850_NOTES * SIZEOF_V850_NOTE))
+ if (!bfd_set_section_size (s, NUM_V850_NOTES * SIZEOF_V850_NOTE))
return NULL;
data = bfd_zalloc (abfd, NUM_V850_NOTES * SIZEOF_V850_NOTE);
return NULL;
data = bfd_zalloc (abfd, NUM_V850_NOTES * SIZEOF_V850_NOTE);
@@
-2443,7
+2444,7
@@
v850_elf_copy_notes (bfd *ibfd, bfd *obfd)
if ((inotes = bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME)) == NULL)
return;
if ((inotes = bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME)) == NULL)
return;
- if (bfd_section_size (i
bfd, inotes) == bfd_section_size (obfd,
onotes))
+ if (bfd_section_size (i
notes) == bfd_section_size (
onotes))
{
bfd_byte * icont;
bfd_byte * ocont;
{
bfd_byte * icont;
bfd_byte * ocont;
@@
-2457,7
+2458,7
@@
v850_elf_copy_notes (bfd *ibfd, bfd *obfd)
return;
/* Copy/overwrite notes from the input to the output. */
return;
/* Copy/overwrite notes from the input to the output. */
- memcpy (ocont, icont, bfd_section_size (o
bfd, o
notes));
+ memcpy (ocont, icont, bfd_section_size (onotes));
}
}
}
}
@@
-2490,7
+2491,7
@@
v850_elf_merge_notes (bfd * ibfd, bfd *obfd)
bfd_byte * icont;
bfd_byte * ocont;
bfd_byte * icont;
bfd_byte * ocont;
- BFD_ASSERT (bfd_section_size (i
bfd, inotes) == bfd_section_size (obfd,
onotes));
+ BFD_ASSERT (bfd_section_size (i
notes) == bfd_section_size (
onotes));
if ((icont = elf_section_data (inotes)->this_hdr.contents) == NULL)
BFD_ASSERT (bfd_malloc_and_get_section (ibfd, inotes, & icont));
if ((icont = elf_section_data (inotes)->this_hdr.contents) == NULL)
BFD_ASSERT (bfd_malloc_and_get_section (ibfd, inotes, & icont));
@@
-2672,7
+2673,7
@@
v850_elf_print_notes (bfd * abfd, FILE * file)
if (notes == NULL || notes->contents == NULL)
return;
if (notes == NULL || notes->contents == NULL)
return;
- BFD_ASSERT (bfd_section_size (
abfd,
notes) == NUM_V850_NOTES * SIZEOF_V850_NOTE);
+ BFD_ASSERT (bfd_section_size (notes) == NUM_V850_NOTES * SIZEOF_V850_NOTE);
for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++)
print_v850_note (abfd, file, notes->contents, id);
for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++)
print_v850_note (abfd, file, notes->contents, id);
@@
-2718,9
+2719,8
@@
v850_elf_object_p (bfd *abfd)
/* Store the machine number in the flags field. */
/* Store the machine number in the flags field. */
-static void
-v850_elf_final_write_processing (bfd *abfd,
- bfd_boolean linker ATTRIBUTE_UNUSED)
+static bfd_boolean
+v850_elf_final_write_processing (bfd *abfd)
{
unsigned long val;
{
unsigned long val;
@@
-2750,6
+2750,7
@@
v850_elf_final_write_processing (bfd *abfd,
default:
break;
}
default:
break;
}
+ return _bfd_elf_final_write_processing (abfd);
}
/* Function to keep V850 specific file flags. */
}
/* Function to keep V850 specific file flags. */
@@
-2946,11
+2947,11
@@
v850_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
asection *sec,
int *retval)
{
asection *sec,
int *retval)
{
- if (strcmp (bfd_
get_section_name (abfd,
sec), ".scommon") == 0)
+ if (strcmp (bfd_
section_name (
sec), ".scommon") == 0)
*retval = SHN_V850_SCOMMON;
*retval = SHN_V850_SCOMMON;
- else if (strcmp (bfd_
get_section_name (abfd,
sec), ".tcommon") == 0)
+ else if (strcmp (bfd_
section_name (
sec), ".tcommon") == 0)
*retval = SHN_V850_TCOMMON;
*retval = SHN_V850_TCOMMON;
- else if (strcmp (bfd_
get_section_name (abfd,
sec), ".zcommon") == 0)
+ else if (strcmp (bfd_
section_name (
sec), ".zcommon") == 0)
*retval = SHN_V850_ZCOMMON;
else
return FALSE;
*retval = SHN_V850_ZCOMMON;
else
return FALSE;
@@
-3150,6
+3151,8
@@
v850_elf_section_from_shdr (bfd *abfd,
const char *name,
int shindex)
{
const char *name,
int shindex)
{
+ flagword flags;
+
/* There ought to be a place to keep ELF backend specific flags, but
at the moment there isn't one. We just keep track of the
sections by their name, instead. */
/* There ought to be a place to keep ELF backend specific flags, but
at the moment there isn't one. We just keep track of the
sections by their name, instead. */
@@
-3157,19
+3160,21
@@
v850_elf_section_from_shdr (bfd *abfd,
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
return FALSE;
if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
return FALSE;
+ flags = 0;
switch (hdr->sh_type)
{
case SHT_V850_SCOMMON:
case SHT_V850_TCOMMON:
case SHT_V850_ZCOMMON:
switch (hdr->sh_type)
{
case SHT_V850_SCOMMON:
case SHT_V850_TCOMMON:
case SHT_V850_ZCOMMON:
- if (! bfd_set_section_flags (abfd, hdr->bfd_section,
- (bfd_get_section_flags (abfd,
- hdr->bfd_section)
- | SEC_IS_COMMON)))
- return FALSE;
+ flags = SEC_IS_COMMON;
}
}
- return TRUE;
+ if ((hdr->sh_flags & SHF_V850_GPREL) != 0)
+ flags |= SEC_SMALL_DATA;
+
+ return (flags == 0
+ || bfd_set_section_flags (hdr->bfd_section,
+ hdr->bfd_section->flags | flags));
}
/* Set the correct type for a V850 ELF section. We do this
}
/* Set the correct type for a V850 ELF section. We do this
@@
-3182,7
+3187,7
@@
v850_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
{
const char * name;
{
const char * name;
- name = bfd_
get_section_name (abfd,
sec);
+ name = bfd_
section_name (
sec);
if (strcmp (name, ".scommon") == 0)
hdr->sh_type = SHT_V850_SCOMMON;
if (strcmp (name, ".scommon") == 0)
hdr->sh_type = SHT_V850_SCOMMON;
@@
-3837,7
+3842,7
@@
v850_elf_relax_section (bfd *abfd,
if (no_match < 0
&& ((insn[2] & JMP_R_MASK) != JMP_R
|| MOVEA_R2 (insn[1]) != JMP_R1 (insn[2])))
if (no_match < 0
&& ((insn[2] & JMP_R_MASK) != JMP_R
|| MOVEA_R2 (insn[1]) != JMP_R1 (insn[2])))
- no_match =
4
;
+ no_match =
2
;
}
else
{
}
else
{
@@
-4088,16
+4093,13
@@
v850_elf_relax_section (bfd *abfd,
}
finish:
}
finish:
- if (internal_relocs != NULL
- && elf_section_data (sec)->relocs != internal_relocs)
+ if (elf_section_data (sec)->relocs != internal_relocs)
free (internal_relocs);
free (internal_relocs);
- if (contents != NULL
- && elf_section_data (sec)->this_hdr.contents != (unsigned char *) contents)
+ if (elf_section_data (sec)->this_hdr.contents != (unsigned char *) contents)
free (contents);
free (contents);
- if (isymbuf != NULL
- && symtab_hdr->contents != (bfd_byte *) isymbuf)
+ if (symtab_hdr->contents != (bfd_byte *) isymbuf)
free (isymbuf);
return result;
free (isymbuf);
return result;
This page took
0.050627 seconds
and
4
git commands to generate.