Add missing prototypes. Fix formatting.

This commit is contained in:
Nick Clifton
2001-08-13 10:06:11 +00:00
parent 7f6621cdd7
commit e12dd2eac6
2 changed files with 99 additions and 87 deletions

View File

@ -1,5 +1,5 @@
/* BFD support for the NEC V850 processor
Copyright 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
Copyright 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@ -23,6 +23,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <ctype.h>
static boolean scan PARAMS ((const struct bfd_arch_info *, const char *));
static boolean
scan (info, string)
const struct bfd_arch_info * info;
@ -33,38 +35,34 @@ scan (info, string)
unsigned long number;
enum bfd_architecture arch;
/* First test for an exact match */
/* First test for an exact match. */
if (strcasecmp (string, info->printable_name) == 0)
return true;
/* See how much of the supplied string matches with the
architecture, eg the string m68k:68020 would match the m68k entry
up to the :, then we get left with the machine number */
up to the :, then we get left with the machine number. */
for (ptr_src = string, ptr_tst = info->arch_name;
*ptr_src && *ptr_tst;
ptr_src++, ptr_tst++)
{
if (*ptr_src != *ptr_tst) break;
}
if (*ptr_src != *ptr_tst)
break;
/* Chewed up as much of the architecture as will match, skip any
colons */
/* Chewed up as much of the architecture as will match;
if there is a colon present skip it. */
if (*ptr_src == ':')
ptr_src++;
ptr_src ++;
if (*ptr_src == 0)
{
/* nothing more, then only keep this one if it is the default
machine for this architecture */
return info->the_default;
}
/* Nothing more, then only keep this one if it is
the default machine for this architecture. */
return info->the_default;
number = 0;
while (isdigit ((unsigned char) *ptr_src))
{
number = number * 10 + * ptr_src - '0';
ptr_src++;
ptr_src ++;
}
switch (number)
@ -92,12 +90,12 @@ scan (info, string)
static const bfd_arch_info_type arch_info_struct[] =
{
N (bfd_mach_v850e, "v850e", false, &arch_info_struct[1]),
N (bfd_mach_v850e, "v850e", false, & arch_info_struct[1]),
N (bfd_mach_v850ea, "v850ea", false, NULL)
};
#undef NEXT
#define NEXT &arch_info_struct[0]
#undef NEXT
#define NEXT & arch_info_struct[0]
const bfd_arch_info_type bfd_v850_arch =
N (bfd_mach_v850, "v850", true, NEXT);

View File

@ -27,8 +27,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libbfd.h"
#include "elf-bfd.h"
#include "elf/v850.h"
#include "libiberty.h"
/* sign-extend a 24-bit number */
/* Sign-extend a 24-bit number. */
#define SEXT24(x) ((((x) & 0xffffff) ^ (~ 0x7fffff)) + 0x800000)
static reloc_howto_type *v850_elf_reloc_type_lookup
@ -81,9 +82,16 @@ static boolean v850_elf_link_output_symbol_hook
Elf_Internal_Sym *, asection *));
static boolean v850_elf_section_from_shdr
PARAMS ((bfd *, Elf_Internal_Shdr *, char *));
static boolean v850_elf_gc_sweep_hook
PARAMS ((bfd *, struct bfd_link_info *, asection *,
const Elf_Internal_Rela *));
static asection * v850_elf_gc_mark_hook
PARAMS ((bfd *, struct bfd_link_info *,
Elf_Internal_Rela *, struct elf_link_hash_entry *,
Elf_Internal_Sym *));
/* Note: It is REQUIRED that the 'type' value of each entry in this array
match the index of the entry in the array. */
/* Note: It is REQUIRED that the 'type' value of each entry
in this array match the index of the entry in the array. */
static reloc_howto_type v850_elf_howto_table[] =
{
/* This reloc does nothing. */
@ -503,7 +511,8 @@ static const struct v850_elf_reloc_map v850_elf_reloc_map[] =
};
/* Map a bfd relocation into the appropriate howto structure */
/* Map a bfd relocation into the appropriate howto structure. */
static reloc_howto_type *
v850_elf_reloc_type_lookup (abfd, code)
bfd * abfd ATTRIBUTE_UNUSED;
@ -511,22 +520,19 @@ v850_elf_reloc_type_lookup (abfd, code)
{
unsigned int i;
for (i = 0;
i < sizeof (v850_elf_reloc_map) / sizeof (struct v850_elf_reloc_map);
i++)
{
if (v850_elf_reloc_map[i].bfd_reloc_val == code)
{
BFD_ASSERT (v850_elf_howto_table[v850_elf_reloc_map[i].elf_reloc_val].type == v850_elf_reloc_map[i].elf_reloc_val);
for (i = ARRAY_SIZE (v850_elf_reloc_map); i --;)
if (v850_elf_reloc_map[i].bfd_reloc_val == code)
{
BFD_ASSERT (v850_elf_howto_table[code].type == v850_elf_reloc_map[i].elf_reloc_val);
return & v850_elf_howto_table[v850_elf_reloc_map[i].elf_reloc_val];
}
}
return v850_elf_howto_table + code;
}
return NULL;
}
/* Set the howto pointer for an V850 ELF reloc. */
static void
v850_elf_info_to_howto_rel (abfd, cache_ptr, dst)
bfd * abfd ATTRIBUTE_UNUSED;
@ -626,8 +632,8 @@ v850_elf_check_relocs (abfd, info, sec, relocs)
return false;
break;
/* This relocation describes which C++ vtable entries are actually
used. Record for later use during GC. */
/* This relocation describes which C++ vtable entries
are actually used. Record for later use during GC. */
case R_V850_GNU_VTENTRY:
if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend))
return false;
@ -662,7 +668,8 @@ v850_elf_check_relocs (abfd, info, sec, relocs)
small_data_common:
if (h)
{
h->other |= other; /* flag which type of relocation was used */
/* Flag which type of relocation was used. */
h->other |= other;
if ((h->other & V850_OTHER_MASK) != (other & V850_OTHER_MASK)
&& (h->other & V850_OTHER_ERROR) == 0)
{
@ -702,7 +709,9 @@ v850_elf_check_relocs (abfd, info, sec, relocs)
&& h->root.u.c.p
&& !strcmp (bfd_get_section_name (abfd, h->root.u.c.p->section), "COMMON"))
{
asection *section = h->root.u.c.p->section = bfd_make_section_old_way (abfd, common);
asection * section;
section = h->root.u.c.p->section = bfd_make_section_old_way (abfd, common);
section->flags |= SEC_IS_COMMON;
}
@ -719,20 +728,18 @@ v850_elf_check_relocs (abfd, info, sec, relocs)
return ret;
}
/*
* In the old version, when an entry was checked out from the table,
* it was deleted. This produced an error if the entry was needed
* more than once, as the second attempted retry failed.
*
* In the current version, the entry is not deleted, instead we set
* the field 'found' to true. If a second lookup matches the same
* entry, then we know that the hi16s reloc has already been updated
* and does not need to be updated a second time.
*
* TODO - TOFIX: If it is possible that we need to restore 2 different
* addresses from the same table entry, where the first generates an
* overflow, whilst the second do not, then this code will fail.
*/
/* In the old version, when an entry was checked out from the table,
it was deleted. This produced an error if the entry was needed
more than once, as the second attempted retry failed.
In the current version, the entry is not deleted, instead we set
the field 'found' to true. If a second lookup matches the same
entry, then we know that the hi16s reloc has already been updated
and does not need to be updated a second time.
TODO - TOFIX: If it is possible that we need to restore 2 different
addresses from the same table entry, where the first generates an
overflow, whilst the second do not, then this code will fail. */
typedef struct hi16s_location
{
@ -825,6 +832,7 @@ find_remembered_hi16s_reloc (addend, already_found)
/* FIXME: The code here probably ought to be removed and the code in reloc.c
allowed to do its stuff instead. At least for most of the relocs, anwyay. */
static bfd_reloc_status_type
v850_elf_perform_relocation (abfd, r_type, addend, address)
bfd * abfd;
@ -1029,9 +1037,7 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
0x00000000
+ 0x00006fff (bit 15 not set, so the top half is zero)
------------
0x00006fff which is wrong (assuming that fred is at 0xffff)
*/
0x00006fff which is wrong (assuming that fred is at 0xffff). */
{
long result;
@ -1243,6 +1249,7 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
}
/* Insert the addend into the instruction. */
static bfd_reloc_status_type
v850_elf_reloc (abfd, reloc, symbol, data, isection, obfd, err)
bfd * abfd ATTRIBUTE_UNUSED;
@ -1258,7 +1265,7 @@ v850_elf_reloc (abfd, reloc, symbol, data, isection, obfd, err)
/* If there is an output BFD,
and the symbol is not a section name (which is only defined at final link time),
and either we are not putting the addend into the instruction
or the addend is zero, so there is nothing to add into the instruction
or the addend is zero, so there is nothing to add into the instruction
then just fixup the address and return. */
if (obfd != (bfd *) NULL
&& (symbol->flags & BSF_SECTION_SYM) == 0
@ -1270,9 +1277,7 @@ v850_elf_reloc (abfd, reloc, symbol, data, isection, obfd, err)
}
#if 0
else if (obfd != NULL)
{
return bfd_reloc_continue;
}
return bfd_reloc_continue;
#endif
/* Catch relocs involving undefined symbols. */
@ -1314,15 +1319,14 @@ v850_elf_reloc (abfd, reloc, symbol, data, isection, obfd, err)
.section ".foo","ax"
nop
foo:
nop
*/
nop */
if (reloc->howto->pc_relative == true)
{
/* Here the variable relocation holds the final address of the
symbol we are relocating against, plus any addend. */
relocation -= isection->output_section->vma + isection->output_offset;
/* Deal with pcrel_offset */
/* Deal with pcrel_offset. */
relocation -= reloc->address;
}
#endif
@ -1340,6 +1344,7 @@ v850_elf_is_local_label_name (abfd, name)
}
/* Perform a relocation as part of a final link. */
static bfd_reloc_status_type
v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
input_section, contents, offset, value,
@ -1377,7 +1382,8 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
if (((value & 0xff000000) != 0x0) && ((value & 0xff000000) != 0xff000000))
return bfd_reloc_overflow;
value = SEXT24 (value); /* Only the bottom 24 bits of the PC are valid */
/* Only the bottom 24 bits of the PC are valid */
value = SEXT24 (value);
break;
case R_V850_HI16_S:
@ -1436,7 +1442,8 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
h = bfd_link_hash_lookup (info->hash, "__ep", false, false, true);
if (h == (struct bfd_link_hash_entry *) NULL
|| h->type != bfd_link_hash_defined)
return bfd_reloc_continue; /* Actually this indicates that __ep could not be found. */
/* Actually this indicates that __ep could not be found. */
return bfd_reloc_continue;
ep = (h->u.def.value
+ h->u.def.section->output_section->vma
@ -1455,7 +1462,8 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
h = bfd_link_hash_lookup (info->hash, "__ctbp", false, false, true);
if (h == (struct bfd_link_hash_entry *) NULL
|| h->type != bfd_link_hash_defined)
return (bfd_reloc_dangerous + 1); /* Actually this indicates that __ctbp could not be found. */
/* Actually this indicates that __ctbp could not be found. */
return bfd_reloc_dangerous + 1;
ctbp = (h->u.def.value
+ h->u.def.section->output_section->vma
@ -1501,6 +1509,7 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
}
/* Relocate an V850 ELF section. */
static boolean
v850_elf_relocate_section (output_bfd, info, input_bfd, input_section,
contents, relocs, local_syms, local_sections)
@ -1589,11 +1598,12 @@ v850_elf_relocate_section (output_bfd, info, input_bfd, input_section,
#if 0
{
char * name;
name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name);
name = (name == NULL) ? "<none>" : name;
fprintf (stderr, "local: sec: %s, sym: %s (%d), value: %x + %x + %x addend %x\n",
sec->name, name, sym->st_name,
sec->output_section->vma, sec->output_offset, sym->st_value, rel->r_addend);
fprintf (stderr, "local: sec: %s, sym: %s (%d), value: %x + %x + %x addend %x\n",
sec->name, name, sym->st_name,
sec->output_section->vma, sec->output_offset, sym->st_value, rel->r_addend);
}
#endif
}
@ -1613,15 +1623,15 @@ fprintf (stderr, "local: sec: %s, sym: %s (%d), value: %x + %x + %x addend %x\n"
+ sec->output_section->vma
+ sec->output_offset);
#if 0
fprintf (stderr, "defined: sec: %s, name: %s, value: %x + %x + %x gives: %x\n",
sec->name, h->root.root.string, h->root.u.def.value, sec->output_section->vma, sec->output_offset, relocation);
fprintf (stderr, "defined: sec: %s, name: %s, value: %x + %x + %x gives: %x\n",
sec->name, h->root.root.string, h->root.u.def.value, sec->output_section->vma, sec->output_offset, relocation);
#endif
}
else if (h->root.type == bfd_link_hash_undefweak)
{
#if 0
fprintf (stderr, "undefined: sec: %s, name: %s\n",
sec->name, h->root.root.string);
fprintf (stderr, "undefined: sec: %s, name: %s\n",
sec->name, h->root.root.string);
#endif
relocation = 0;
}
@ -1632,14 +1642,13 @@ fprintf (stderr, "undefined: sec: %s, name: %s\n",
input_section, rel->r_offset, true)))
return false;
#if 0
fprintf (stderr, "unknown: name: %s\n", h->root.root.string);
fprintf (stderr, "unknown: name: %s\n", h->root.root.string);
#endif
relocation = 0;
}
}
/* FIXME: We should use the addend, but the COFF relocations
don't. */
/* FIXME: We should use the addend, but the COFF relocations don't. */
r = v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
input_section,
contents, rel->r_offset,
@ -1725,7 +1734,7 @@ v850_elf_gc_sweep_hook (abfd, info, sec, relocs)
asection *sec ATTRIBUTE_UNUSED;
const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED;
{
/* No got and plt entries for v850-elf */
/* No got and plt entries for v850-elf. */
return true;
}
@ -1772,7 +1781,9 @@ v850_elf_gc_mark_hook (abfd, info, rel, h, sym)
}
return NULL;
}
/* Set the right machine number. */
static boolean
v850_elf_object_p (abfd)
bfd *abfd;
@ -1788,6 +1799,7 @@ v850_elf_object_p (abfd)
}
/* Store the machine number in the flags field. */
static void
v850_elf_final_write_processing (abfd, linker)
bfd * abfd;
@ -1808,6 +1820,7 @@ v850_elf_final_write_processing (abfd, linker)
}
/* Function to keep V850 specific file flags. */
static boolean
v850_elf_set_private_flags (abfd, flags)
bfd * abfd;
@ -1821,7 +1834,8 @@ v850_elf_set_private_flags (abfd, flags)
return true;
}
/* Copy backend specific data from one object module to another */
/* Copy backend specific data from one object module to another. */
static boolean
v850_elf_copy_private_bfd_data (ibfd, obfd)
bfd * ibfd;
@ -1838,11 +1852,12 @@ v850_elf_copy_private_bfd_data (ibfd, obfd)
elf_gp (obfd) = elf_gp (ibfd);
elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
elf_flags_init (obfd) = true;
return true;
}
/* Merge backend specific data from an object file to the output
object file when linking. */
/* Merge backend specific data from an object file
to the output object file when linking. */
static boolean
v850_elf_merge_private_bfd_data (ibfd, obfd)
bfd * ibfd;
@ -1874,9 +1889,7 @@ v850_elf_merge_private_bfd_data (ibfd, obfd)
if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
&& bfd_get_arch_info (obfd)->the_default)
{
return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd));
}
return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd));
return true;
}
@ -1892,7 +1905,8 @@ v850_elf_merge_private_bfd_data (ibfd, obfd)
return true;
}
/* Display the flags field */
/* Display the flags field. */
static boolean
v850_elf_print_private_bfd_data (abfd, ptr)
@ -1938,8 +1952,8 @@ static asection v850_elf_zcom_section;
static asymbol v850_elf_zcom_symbol;
static asymbol * v850_elf_zcom_symbol_ptr;
/* Given a BFD section, try to locate the corresponding ELF section
index. */
/* Given a BFD section, try to locate the
corresponding ELF section index. */
static boolean
v850_elf_section_from_bfd_section (abfd, hdr, sec, retval)
@ -2119,7 +2133,6 @@ v850_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
return true;
}
/*ARGSIGNORED*/
static boolean
v850_elf_link_output_symbol_hook (abfd, info, name, sym, input_sec)
bfd * abfd ATTRIBUTE_UNUSED;
@ -2173,8 +2186,9 @@ v850_elf_section_from_shdr (abfd, hdr, name)
return true;
}
/* Set the correct type for a V850 ELF section. We do this by the
section name, which is a hack, but ought to work. */
/* Set the correct type for a V850 ELF section. We do this
by the section name, which is a hack, but ought to work. */
static boolean
v850_elf_fake_sections (abfd, hdr, sec)
bfd * abfd ATTRIBUTE_UNUSED;