Add -Wshadow to the gcc command line options used when compiling the binutils.
Fix up all warnings generated by the addition of this switch.
This commit is contained in:
parent
01fe1b4183
commit
91d6fa6a03
228 changed files with 4810 additions and 4648 deletions
|
@ -1,3 +1,66 @@
|
|||
2009-12-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* warning.m4 (GCC_WARN_CFLAGS): Add -Wshadow.
|
||||
* configure: Regenerate.
|
||||
* Makefile.in: Regenerate.
|
||||
* doc/Makefile.in: Regenerate.
|
||||
* aout-arm.c: Fix shadowed variable warnings.
|
||||
* aout-tic30.c: Likewise.
|
||||
* aoutx.h: Likewise.
|
||||
* archive.c: Likewise.
|
||||
* coff-alpha.c: Likewise.
|
||||
* coff-i386.c: Likewise.
|
||||
* coff-x86_64.c: Likewise.
|
||||
* coffgen.c: Likewise.
|
||||
* dwarf2.c: Likewise.
|
||||
* ecoff.c: Likewise.
|
||||
* elf-eh-frame.c: Likewise.
|
||||
* elf-m10300.c: Likewise.
|
||||
* elf.c: Likewise.
|
||||
* elf32-arm.c: Likewise.
|
||||
* elf32-avr.c: Likewise.
|
||||
* elf32-bfin.c: Likewise.
|
||||
* elf32-cr16.c: Likewise.
|
||||
* elf32-i386.c: Likewise.
|
||||
* elf32-ip2k.c: Likewise.
|
||||
* elf32-lm32.c: Likewise.
|
||||
* elf32-m68hc1x.c: Likewise.
|
||||
* elf32-microblaze.c: Likewise.
|
||||
* elf32-ppc.c: Likewise.
|
||||
* elf32-rx.c: Likewise.
|
||||
* elf32-score.c: Likewise.
|
||||
* elf32-score7.c: Likewise.
|
||||
* elf32-sh.c: Likewise.
|
||||
* elf32-spu.c: Likewise.
|
||||
* elf32-v850.c: Likewise.
|
||||
* elf32-xtensa.c: Likewise.
|
||||
* elf64-hppa.c: Likewise.
|
||||
* elf64-ppc.c: Likewise.
|
||||
* elf64-x86-64.c: Likewise.
|
||||
* elflink.c: Likewise.
|
||||
* elfxx-ia64.c: Likewise.
|
||||
* elfxx-mips.c: Likewise.
|
||||
* elfxx-sparc.c: Likewise.
|
||||
* hash.c: Likewise.
|
||||
* ieee.c: Likewise.
|
||||
* libbfd.c: Likewise.
|
||||
* mach-o.c: Likewise.
|
||||
* merge.c: Likewise.
|
||||
* nlm32-sparc.c: Likewise.
|
||||
* oasys.c: Likewise.
|
||||
* opncls.c: Likewise.
|
||||
* pdp11.c: Likewise.
|
||||
* peXXigen.c: Likewise.
|
||||
* pef.c: Likewise.
|
||||
* versados.c: Likewise.
|
||||
* vms-gsd.c: Likewise.
|
||||
* vms-hdr.c: Likewise.
|
||||
* vms-tir.c: Likewise.
|
||||
* vms.c: Likewise.
|
||||
* xcofflink.c: Likewise.
|
||||
* xsym.c: Likewise.
|
||||
* xtensa-isa.c: Likewise.
|
||||
|
||||
2009-12-10 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* elfxx-mips.c (mips_elf_calculate_relocation): Correct handling
|
||||
|
|
|
@ -49,6 +49,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|||
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
|
||||
$(top_srcdir)/../config/depstand.m4 \
|
||||
$(top_srcdir)/../config/gettext-sister.m4 \
|
||||
$(top_srcdir)/../config/largefile.m4 \
|
||||
$(top_srcdir)/../config/lead-dot.m4 \
|
||||
$(top_srcdir)/../config/nls.m4 \
|
||||
$(top_srcdir)/../config/override.m4 \
|
||||
|
@ -59,7 +60,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
|
|||
$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
|
||||
$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
|
||||
$(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/zlib.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* BFD back-end for raw ARM a.out binaries.
|
||||
Copyright 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005,
|
||||
2007 Free Software Foundation, Inc.
|
||||
2007, 2009 Free Software Foundation, Inc.
|
||||
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
@ -102,7 +102,7 @@ MY (reloc_howto) (bfd *abfd,
|
|||
unsigned int r_length;
|
||||
unsigned int r_pcrel_done;
|
||||
unsigned int r_neg;
|
||||
int index;
|
||||
int howto_index;
|
||||
|
||||
*r_pcrel = 0;
|
||||
if (bfd_header_big_endian (abfd))
|
||||
|
@ -127,11 +127,11 @@ MY (reloc_howto) (bfd *abfd,
|
|||
r_length = ((rel->r_type[0] & RELOC_STD_BITS_LENGTH_LITTLE)
|
||||
>> RELOC_STD_BITS_LENGTH_SH_LITTLE);
|
||||
}
|
||||
index = r_length + 4 * r_pcrel_done + 8 * r_neg;
|
||||
if (index == 3)
|
||||
howto_index = r_length + 4 * r_pcrel_done + 8 * r_neg;
|
||||
if (howto_index == 3)
|
||||
*r_pcrel = 1;
|
||||
|
||||
return MY (howto_table) + index;
|
||||
return MY (howto_table) + howto_index;
|
||||
}
|
||||
|
||||
#define MY_reloc_howto(BFD, REL, IN, EX, PC) \
|
||||
|
|
|
@ -296,7 +296,7 @@ tic30_aout_reloc_howto (bfd *abfd,
|
|||
{
|
||||
unsigned int r_length;
|
||||
unsigned int r_pcrel_done;
|
||||
int index;
|
||||
int howto_index;
|
||||
|
||||
*r_pcrel = 0;
|
||||
if (bfd_header_big_endian (abfd))
|
||||
|
@ -313,8 +313,8 @@ tic30_aout_reloc_howto (bfd *abfd,
|
|||
r_pcrel_done = (0 != (relocs->r_type[0] & RELOC_STD_BITS_PCREL_LITTLE));
|
||||
r_length = ((relocs->r_type[0] & RELOC_STD_BITS_LENGTH_LITTLE) >> RELOC_STD_BITS_LENGTH_SH_LITTLE);
|
||||
}
|
||||
index = r_length + 4 * r_pcrel_done;
|
||||
return tic30_aout_howto_table + index;
|
||||
howto_index = r_length + 4 * r_pcrel_done;
|
||||
return tic30_aout_howto_table + howto_index;
|
||||
}
|
||||
|
||||
/* These macros will get 24-bit values from the bfd definition.
|
||||
|
|
10
bfd/aoutx.h
10
bfd/aoutx.h
|
@ -1808,7 +1808,7 @@ add_to_stringtab (bfd *abfd,
|
|||
bfd_boolean copy)
|
||||
{
|
||||
bfd_boolean hash;
|
||||
bfd_size_type index;
|
||||
bfd_size_type str_index;
|
||||
|
||||
/* An index of 0 always means the empty string. */
|
||||
if (str == 0 || *str == '\0')
|
||||
|
@ -1820,14 +1820,14 @@ add_to_stringtab (bfd *abfd,
|
|||
if ((abfd->flags & BFD_TRADITIONAL_FORMAT) != 0)
|
||||
hash = FALSE;
|
||||
|
||||
index = _bfd_stringtab_add (tab, str, hash, copy);
|
||||
str_index = _bfd_stringtab_add (tab, str, hash, copy);
|
||||
|
||||
if (index != (bfd_size_type) -1)
|
||||
if (str_index != (bfd_size_type) -1)
|
||||
/* Add BYTES_IN_WORD to the return value to account for the
|
||||
space taken up by the string table size. */
|
||||
index += BYTES_IN_WORD;
|
||||
str_index += BYTES_IN_WORD;
|
||||
|
||||
return index;
|
||||
return str_index;
|
||||
}
|
||||
|
||||
/* Write out a strtab. ABFD is already at the right location in the
|
||||
|
|
|
@ -354,15 +354,15 @@ _bfd_find_nested_archive (bfd *arch_bfd, const char *filename)
|
|||
static char *
|
||||
get_extended_arelt_filename (bfd *arch, const char *name, file_ptr *originp)
|
||||
{
|
||||
unsigned long index = 0;
|
||||
unsigned long table_index = 0;
|
||||
const char *endp;
|
||||
|
||||
/* Should extract string so that I can guarantee not to overflow into
|
||||
the next region, but I'm too lazy. */
|
||||
errno = 0;
|
||||
/* Skip first char, which is '/' in SVR4 or ' ' in some other variants. */
|
||||
index = strtol (name + 1, (char **) &endp, 10);
|
||||
if (errno != 0 || index >= bfd_ardata (arch)->extended_names_size)
|
||||
table_index = strtol (name + 1, (char **) &endp, 10);
|
||||
if (errno != 0 || table_index >= bfd_ardata (arch)->extended_names_size)
|
||||
{
|
||||
bfd_set_error (bfd_error_malformed_archive);
|
||||
return NULL;
|
||||
|
@ -383,7 +383,7 @@ get_extended_arelt_filename (bfd *arch, const char *name, file_ptr *originp)
|
|||
else
|
||||
*originp = 0;
|
||||
|
||||
return bfd_ardata (arch)->extended_names + index;
|
||||
return bfd_ardata (arch)->extended_names + table_index;
|
||||
}
|
||||
|
||||
/* This functions reads an arch header and returns an areltdata pointer, or
|
||||
|
@ -656,14 +656,14 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
|
|||
}
|
||||
|
||||
/* Return the BFD which is referenced by the symbol in ABFD indexed by
|
||||
INDEX. INDEX should have been returned by bfd_get_next_mapent. */
|
||||
SYM_INDEX. SYM_INDEX should have been returned by bfd_get_next_mapent. */
|
||||
|
||||
bfd *
|
||||
_bfd_generic_get_elt_at_index (bfd *abfd, symindex index)
|
||||
_bfd_generic_get_elt_at_index (bfd *abfd, symindex sym_index)
|
||||
{
|
||||
carsym *entry;
|
||||
|
||||
entry = bfd_ardata (abfd)->symdefs + index;
|
||||
entry = bfd_ardata (abfd)->symdefs + sym_index;
|
||||
return _bfd_get_elt_at_filepos (abfd, entry->file_offset);
|
||||
}
|
||||
|
||||
|
|
|
@ -2272,13 +2272,11 @@ alpha_ecoff_openr_next_archived_file (archive, last_file)
|
|||
/* Open the archive file given an index into the armap. */
|
||||
|
||||
static bfd *
|
||||
alpha_ecoff_get_elt_at_index (abfd, index)
|
||||
bfd *abfd;
|
||||
symindex index;
|
||||
alpha_ecoff_get_elt_at_index (bfd *abfd, symindex sym_index)
|
||||
{
|
||||
carsym *entry;
|
||||
|
||||
entry = bfd_ardata (abfd)->symdefs + index;
|
||||
entry = bfd_ardata (abfd)->symdefs + sym_index;
|
||||
return alpha_ecoff_get_elt_at_filepos (abfd, entry->file_offset);
|
||||
}
|
||||
|
||||
|
|
|
@ -532,16 +532,16 @@ coff_i386_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
|
|||
osect_vma = h->root.u.def.section->output_section->vma;
|
||||
else
|
||||
{
|
||||
asection *sec;
|
||||
asection *s;
|
||||
int i;
|
||||
|
||||
/* Sigh, the only way to get the section to offset against
|
||||
is to find it the hard way. */
|
||||
|
||||
for (sec = abfd->sections, i = 1; i < sym->n_scnum; i++)
|
||||
sec = sec->next;
|
||||
for (s = abfd->sections, i = 1; i < sym->n_scnum; i++)
|
||||
s = s->next;
|
||||
|
||||
osect_vma = sec->output_section->vma;
|
||||
osect_vma = s->output_section->vma;
|
||||
}
|
||||
|
||||
*addendp -= osect_vma;
|
||||
|
|
|
@ -621,15 +621,15 @@ coff_amd64_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
osect_vma = h->root.u.def.section->output_section->vma;
|
||||
else
|
||||
{
|
||||
asection *sec;
|
||||
asection *s;
|
||||
int i;
|
||||
|
||||
/* Sigh, the only way to get the section to offset against
|
||||
is to find it the hard way. */
|
||||
for (sec = abfd->sections, i = 1; i < sym->n_scnum; i++)
|
||||
sec = sec->next;
|
||||
for (s = abfd->sections, i = 1; i < sym->n_scnum; i++)
|
||||
s = s->next;
|
||||
|
||||
osect_vma = sec->output_section->vma;
|
||||
osect_vma = s->output_section->vma;
|
||||
}
|
||||
|
||||
*addendp -= osect_vma;
|
||||
|
|
|
@ -307,20 +307,20 @@ coff_object_p (bfd *abfd)
|
|||
/* Get the BFD section from a COFF symbol section number. */
|
||||
|
||||
asection *
|
||||
coff_section_from_bfd_index (bfd *abfd, int index)
|
||||
coff_section_from_bfd_index (bfd *abfd, int section_index)
|
||||
{
|
||||
struct bfd_section *answer = abfd->sections;
|
||||
|
||||
if (index == N_ABS)
|
||||
if (section_index == N_ABS)
|
||||
return bfd_abs_section_ptr;
|
||||
if (index == N_UNDEF)
|
||||
if (section_index == N_UNDEF)
|
||||
return bfd_und_section_ptr;
|
||||
if (index == N_DEBUG)
|
||||
if (section_index == N_DEBUG)
|
||||
return bfd_abs_section_ptr;
|
||||
|
||||
while (answer)
|
||||
{
|
||||
if (answer->target_index == index)
|
||||
if (answer->target_index == section_index)
|
||||
return answer;
|
||||
answer = answer->next;
|
||||
}
|
||||
|
|
2
bfd/configure
vendored
2
bfd/configure
vendored
|
@ -12013,7 +12013,7 @@ fi
|
|||
|
||||
|
||||
|
||||
GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
|
||||
GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow"
|
||||
|
||||
# Check whether --enable-werror was given.
|
||||
if test "${enable_werror+set}" = set; then :
|
||||
|
|
|
@ -46,6 +46,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|||
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
|
||||
$(top_srcdir)/../config/depstand.m4 \
|
||||
$(top_srcdir)/../config/gettext-sister.m4 \
|
||||
$(top_srcdir)/../config/largefile.m4 \
|
||||
$(top_srcdir)/../config/lead-dot.m4 \
|
||||
$(top_srcdir)/../config/nls.m4 \
|
||||
$(top_srcdir)/../config/override.m4 \
|
||||
|
@ -56,7 +57,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
|
|||
$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
|
||||
$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
|
||||
$(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/zlib.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
||||
|
|
18
bfd/dwarf2.c
18
bfd/dwarf2.c
|
@ -1468,16 +1468,13 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
|
|||
line_ptr += 2;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Unknown standard opcode, ignore it. */
|
||||
for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++)
|
||||
{
|
||||
(void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
|
||||
line_ptr += bytes_read;
|
||||
}
|
||||
}
|
||||
/* Unknown standard opcode, ignore it. */
|
||||
for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++)
|
||||
{
|
||||
(void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
|
||||
line_ptr += bytes_read;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2469,7 +2466,6 @@ place_sections (bfd *abfd, struct dwarf2_debug *stash)
|
|||
asection *sect;
|
||||
bfd_vma last_vma = 0, last_dwarf = 0;
|
||||
bfd_size_type amt;
|
||||
struct adjusted_section *p;
|
||||
|
||||
i = 0;
|
||||
for (sect = abfd->sections; sect != NULL; sect = sect->next)
|
||||
|
|
10
bfd/ecoff.c
10
bfd/ecoff.c
|
@ -2677,7 +2677,7 @@ _bfd_ecoff_write_object_contents (bfd *abfd)
|
|||
else
|
||||
{
|
||||
const char *name;
|
||||
unsigned int i;
|
||||
unsigned int j;
|
||||
static struct
|
||||
{
|
||||
const char * name;
|
||||
|
@ -2704,14 +2704,14 @@ _bfd_ecoff_write_object_contents (bfd *abfd)
|
|||
|
||||
name = bfd_get_section_name (abfd, bfd_get_section (sym));
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE (section_symndx); i++)
|
||||
if (streq (name, section_symndx[i].name))
|
||||
for (j = 0; j < ARRAY_SIZE (section_symndx); j++)
|
||||
if (streq (name, section_symndx[j].name))
|
||||
{
|
||||
in.r_symndx = section_symndx[i].r_symndx;
|
||||
in.r_symndx = section_symndx[j].r_symndx;
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == ARRAY_SIZE (section_symndx))
|
||||
if (j == ARRAY_SIZE (section_symndx))
|
||||
abort ();
|
||||
in.r_extern = 0;
|
||||
}
|
||||
|
|
|
@ -1629,7 +1629,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
|
|||
if (ent->set_loc)
|
||||
{
|
||||
/* Adjust DW_CFA_set_loc. */
|
||||
unsigned int cnt, width;
|
||||
unsigned int cnt;
|
||||
bfd_vma new_offset;
|
||||
|
||||
width = get_DW_EH_PE_width (ent->fde_encoding, ptr_size);
|
||||
|
@ -1639,7 +1639,6 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
|
|||
|
||||
for (cnt = 1; cnt <= ent->set_loc[0]; cnt++)
|
||||
{
|
||||
bfd_vma value;
|
||||
buf = start + ent->set_loc[cnt];
|
||||
|
||||
value = read_value (abfd, buf, width,
|
||||
|
|
|
@ -1274,8 +1274,6 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
|||
&& ELF_ST_VISIBILITY (h->other) != STV_HIDDEN
|
||||
&& h->plt.offset != (bfd_vma) -1)
|
||||
{
|
||||
asection * splt;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
|
||||
value = (splt->output_section->vma
|
||||
|
@ -1297,8 +1295,6 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
|||
&& ELF_ST_VISIBILITY (h->other) != STV_HIDDEN
|
||||
&& h->plt.offset != (bfd_vma) -1)
|
||||
{
|
||||
asection * splt;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
|
||||
value = (splt->output_section->vma
|
||||
|
@ -1321,8 +1317,6 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
|||
case R_MN10300_GOT24:
|
||||
case R_MN10300_GOT16:
|
||||
{
|
||||
asection * sgot;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
|
||||
if (h != NULL)
|
||||
|
|
72
bfd/elf.c
72
bfd/elf.c
|
@ -734,18 +734,18 @@ _bfd_elf_setup_sections (bfd *abfd)
|
|||
}
|
||||
else
|
||||
{
|
||||
asection *link = NULL;
|
||||
asection *linksec = NULL;
|
||||
|
||||
if (elfsec < elf_numsections (abfd))
|
||||
{
|
||||
this_hdr = elf_elfsections (abfd)[elfsec];
|
||||
link = this_hdr->bfd_section;
|
||||
linksec = this_hdr->bfd_section;
|
||||
}
|
||||
|
||||
/* PR 1991, 2008:
|
||||
Some strip/objcopy may leave an incorrect value in
|
||||
sh_link. We don't want to proceed. */
|
||||
if (link == NULL)
|
||||
if (linksec == NULL)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: sh_link [%d] in section `%A' is incorrect"),
|
||||
|
@ -753,7 +753,7 @@ _bfd_elf_setup_sections (bfd *abfd)
|
|||
result = FALSE;
|
||||
}
|
||||
|
||||
elf_linked_to_section (s) = link;
|
||||
elf_linked_to_section (s) = linksec;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1961,11 +1961,11 @@ bfd_sym_from_r_symndx (struct sym_cache *cache,
|
|||
section. */
|
||||
|
||||
asection *
|
||||
bfd_section_from_elf_index (bfd *abfd, unsigned int index)
|
||||
bfd_section_from_elf_index (bfd *abfd, unsigned int sec_index)
|
||||
{
|
||||
if (index >= elf_numsections (abfd))
|
||||
if (sec_index >= elf_numsections (abfd))
|
||||
return NULL;
|
||||
return elf_elfsections (abfd)[index]->bfd_section;
|
||||
return elf_elfsections (abfd)[sec_index]->bfd_section;
|
||||
}
|
||||
|
||||
static const struct bfd_elf_special_section special_sections_b[] =
|
||||
|
@ -2266,7 +2266,7 @@ _bfd_elf_new_section_hook (bfd *abfd, asection *sec)
|
|||
bfd_boolean
|
||||
_bfd_elf_make_section_from_phdr (bfd *abfd,
|
||||
Elf_Internal_Phdr *hdr,
|
||||
int index,
|
||||
int hdr_index,
|
||||
const char *type_name)
|
||||
{
|
||||
asection *newsect;
|
||||
|
@ -2281,7 +2281,7 @@ _bfd_elf_make_section_from_phdr (bfd *abfd,
|
|||
|
||||
if (hdr->p_filesz > 0)
|
||||
{
|
||||
sprintf (namebuf, "%s%d%s", type_name, index, split ? "a" : "");
|
||||
sprintf (namebuf, "%s%d%s", type_name, hdr_index, split ? "a" : "");
|
||||
len = strlen (namebuf) + 1;
|
||||
name = (char *) bfd_alloc (abfd, len);
|
||||
if (!name)
|
||||
|
@ -2317,7 +2317,7 @@ _bfd_elf_make_section_from_phdr (bfd *abfd,
|
|||
{
|
||||
bfd_vma align;
|
||||
|
||||
sprintf (namebuf, "%s%d%s", type_name, index, split ? "b" : "");
|
||||
sprintf (namebuf, "%s%d%s", type_name, hdr_index, split ? "b" : "");
|
||||
len = strlen (namebuf) + 1;
|
||||
name = (char *) bfd_alloc (abfd, len);
|
||||
if (!name)
|
||||
|
@ -2356,51 +2356,51 @@ _bfd_elf_make_section_from_phdr (bfd *abfd,
|
|||
}
|
||||
|
||||
bfd_boolean
|
||||
bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index)
|
||||
bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index)
|
||||
{
|
||||
const struct elf_backend_data *bed;
|
||||
|
||||
switch (hdr->p_type)
|
||||
{
|
||||
case PT_NULL:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "null");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "null");
|
||||
|
||||
case PT_LOAD:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "load");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "load");
|
||||
|
||||
case PT_DYNAMIC:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "dynamic");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "dynamic");
|
||||
|
||||
case PT_INTERP:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "interp");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "interp");
|
||||
|
||||
case PT_NOTE:
|
||||
if (! _bfd_elf_make_section_from_phdr (abfd, hdr, index, "note"))
|
||||
if (! _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "note"))
|
||||
return FALSE;
|
||||
if (! elf_read_notes (abfd, hdr->p_offset, hdr->p_filesz))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
|
||||
case PT_SHLIB:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "shlib");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "shlib");
|
||||
|
||||
case PT_PHDR:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "phdr");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "phdr");
|
||||
|
||||
case PT_GNU_EH_FRAME:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index,
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index,
|
||||
"eh_frame_hdr");
|
||||
|
||||
case PT_GNU_STACK:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "stack");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "stack");
|
||||
|
||||
case PT_GNU_RELRO:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro");
|
||||
|
||||
default:
|
||||
/* Check for any processor-specific program segment types. */
|
||||
bed = get_elf_backend_data (abfd);
|
||||
return bed->elf_backend_section_from_phdr (abfd, hdr, index, "proc");
|
||||
return bed->elf_backend_section_from_phdr (abfd, hdr, hdr_index, "proc");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2894,10 +2894,11 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info)
|
|||
|
||||
for (sec = abfd->sections; sec; sec = sec->next)
|
||||
{
|
||||
struct bfd_elf_section_data *d = elf_section_data (sec);
|
||||
asection *s;
|
||||
const char *name;
|
||||
|
||||
d = elf_section_data (sec);
|
||||
|
||||
i_shdrp[d->this_idx] = &d->this_hdr;
|
||||
if (d->rel_idx != 0)
|
||||
i_shdrp[d->rel_idx] = &d->rel_hdr;
|
||||
|
@ -3860,7 +3861,8 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
|
|||
&& CONST_STRNEQ (s->name, ".note"))
|
||||
{
|
||||
asection *s2;
|
||||
unsigned count = 1;
|
||||
|
||||
count = 1;
|
||||
amt = sizeof (struct elf_segment_map);
|
||||
if (s->alignment_power == 2)
|
||||
for (s2 = s; s2->next != NULL; s2 = s2->next)
|
||||
|
@ -3903,8 +3905,6 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
|
|||
/* If there are any SHF_TLS output sections, add PT_TLS segment. */
|
||||
if (tls_count > 0)
|
||||
{
|
||||
int i;
|
||||
|
||||
amt = sizeof (struct elf_segment_map);
|
||||
amt += (tls_count - 1) * sizeof (asection *);
|
||||
m = (struct elf_segment_map *) bfd_zalloc (abfd, amt);
|
||||
|
@ -3916,7 +3916,7 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
|
|||
/* Mandated PF_R. */
|
||||
m->p_flags = PF_R;
|
||||
m->p_flags_valid = 1;
|
||||
for (i = 0; i < tls_count; ++i)
|
||||
for (i = 0; i < (unsigned int) tls_count; ++i)
|
||||
{
|
||||
BFD_ASSERT (first_tls->flags & SEC_THREAD_LOCAL);
|
||||
m->sections[i] = first_tls;
|
||||
|
@ -5042,34 +5042,34 @@ unsigned int
|
|||
_bfd_elf_section_from_bfd_section (bfd *abfd, struct bfd_section *asect)
|
||||
{
|
||||
const struct elf_backend_data *bed;
|
||||
unsigned int index;
|
||||
unsigned int sec_index;
|
||||
|
||||
if (elf_section_data (asect) != NULL
|
||||
&& elf_section_data (asect)->this_idx != 0)
|
||||
return elf_section_data (asect)->this_idx;
|
||||
|
||||
if (bfd_is_abs_section (asect))
|
||||
index = SHN_ABS;
|
||||
sec_index = SHN_ABS;
|
||||
else if (bfd_is_com_section (asect))
|
||||
index = SHN_COMMON;
|
||||
sec_index = SHN_COMMON;
|
||||
else if (bfd_is_und_section (asect))
|
||||
index = SHN_UNDEF;
|
||||
sec_index = SHN_UNDEF;
|
||||
else
|
||||
index = SHN_BAD;
|
||||
sec_index = SHN_BAD;
|
||||
|
||||
bed = get_elf_backend_data (abfd);
|
||||
if (bed->elf_backend_section_from_bfd_section)
|
||||
{
|
||||
int retval = index;
|
||||
int retval = sec_index;
|
||||
|
||||
if ((*bed->elf_backend_section_from_bfd_section) (abfd, asect, &retval))
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (index == SHN_BAD)
|
||||
if (sec_index == SHN_BAD)
|
||||
bfd_set_error (bfd_error_nonrepresentable_section);
|
||||
|
||||
return index;
|
||||
return sec_index;
|
||||
}
|
||||
|
||||
/* Given a BFD symbol, return the index in the ELF symbol table, or -1
|
||||
|
@ -9011,7 +9011,7 @@ _bfd_elf_get_synthetic_symtab (bfd *abfd,
|
|||
if (p->addend != 0)
|
||||
{
|
||||
char buf[30], *a;
|
||||
int len;
|
||||
|
||||
memcpy (names, "+0x", sizeof ("+0x") - 1);
|
||||
names += sizeof ("+0x") - 1;
|
||||
bfd_sprintf_vma (abfd, buf, p->addend);
|
||||
|
|
|
@ -5693,7 +5693,7 @@ static enum bfd_arm_vfp11_pipe
|
|||
bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
||||
int *numregs)
|
||||
{
|
||||
enum bfd_arm_vfp11_pipe pipe = VFP11_BAD;
|
||||
enum bfd_arm_vfp11_pipe vpipe = VFP11_BAD;
|
||||
bfd_boolean is_double = ((insn & 0xf00) == 0xb00) ? 1 : 0;
|
||||
|
||||
if ((insn & 0x0f000e10) == 0x0e000a00) /* A data-processing insn. */
|
||||
|
@ -5712,7 +5712,7 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
|||
case 1: /* fnmac[sd]. */
|
||||
case 2: /* fmsc[sd]. */
|
||||
case 3: /* fnmsc[sd]. */
|
||||
pipe = VFP11_FMAC;
|
||||
vpipe = VFP11_FMAC;
|
||||
bfd_arm_vfp11_write_mask (destmask, fd);
|
||||
regs[0] = fd;
|
||||
regs[1] = bfd_arm_vfp11_regno (insn, is_double, 16, 7); /* Fn. */
|
||||
|
@ -5724,11 +5724,11 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
|||
case 5: /* fnmul[sd]. */
|
||||
case 6: /* fadd[sd]. */
|
||||
case 7: /* fsub[sd]. */
|
||||
pipe = VFP11_FMAC;
|
||||
vpipe = VFP11_FMAC;
|
||||
goto vfp_binop;
|
||||
|
||||
case 8: /* fdiv[sd]. */
|
||||
pipe = VFP11_DS;
|
||||
vpipe = VFP11_DS;
|
||||
vfp_binop:
|
||||
bfd_arm_vfp11_write_mask (destmask, fd);
|
||||
regs[0] = bfd_arm_vfp11_regno (insn, is_double, 16, 7); /* Fn. */
|
||||
|
@ -5758,14 +5758,14 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
|||
case 27: /* ftosiz[sd]. */
|
||||
/* These instructions will not bounce due to underflow. */
|
||||
*numregs = 0;
|
||||
pipe = VFP11_FMAC;
|
||||
vpipe = VFP11_FMAC;
|
||||
break;
|
||||
|
||||
case 3: /* fsqrt[sd]. */
|
||||
/* fsqrt cannot underflow, but it can (perhaps) overwrite
|
||||
registers to cause the erratum in previous instructions. */
|
||||
bfd_arm_vfp11_write_mask (destmask, fd);
|
||||
pipe = VFP11_DS;
|
||||
vpipe = VFP11_DS;
|
||||
break;
|
||||
|
||||
case 15: /* fcvt{ds,sd}. */
|
||||
|
@ -5780,7 +5780,7 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
|||
|
||||
*numregs = rnum;
|
||||
|
||||
pipe = VFP11_FMAC;
|
||||
vpipe = VFP11_FMAC;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -5810,7 +5810,7 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
|||
}
|
||||
}
|
||||
|
||||
pipe = VFP11_LS;
|
||||
vpipe = VFP11_LS;
|
||||
}
|
||||
else if ((insn & 0x0e100e00) == 0x0c100a00) /* A load insn. */
|
||||
{
|
||||
|
@ -5845,7 +5845,7 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
|||
return VFP11_BAD;
|
||||
}
|
||||
|
||||
pipe = VFP11_LS;
|
||||
vpipe = VFP11_LS;
|
||||
}
|
||||
/* Single-register transfer. Note L==0. */
|
||||
else if ((insn & 0x0f100e10) == 0x0e000a10)
|
||||
|
@ -5867,10 +5867,10 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs,
|
|||
break;
|
||||
}
|
||||
|
||||
pipe = VFP11_LS;
|
||||
vpipe = VFP11_LS;
|
||||
}
|
||||
|
||||
return pipe;
|
||||
return vpipe;
|
||||
}
|
||||
|
||||
|
||||
|
@ -5990,17 +5990,17 @@ bfd_elf32_arm_vfp11_erratum_scan (bfd *abfd, struct bfd_link_info *link_info)
|
|||
| (contents[i + 1] << 8)
|
||||
| contents[i];
|
||||
unsigned int writemask = 0;
|
||||
enum bfd_arm_vfp11_pipe pipe;
|
||||
enum bfd_arm_vfp11_pipe vpipe;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
pipe = bfd_arm_vfp11_insn_decode (insn, &writemask, regs,
|
||||
vpipe = bfd_arm_vfp11_insn_decode (insn, &writemask, regs,
|
||||
&numregs);
|
||||
/* I'm assuming the VFP11 erratum can trigger with denorm
|
||||
operands on either the FMAC or the DS pipeline. This might
|
||||
lead to slightly overenthusiastic veneer insertion. */
|
||||
if (pipe == VFP11_FMAC || pipe == VFP11_DS)
|
||||
if (vpipe == VFP11_FMAC || vpipe == VFP11_DS)
|
||||
{
|
||||
state = use_vector ? 1 : 2;
|
||||
first_fmac = i;
|
||||
|
@ -6011,10 +6011,10 @@ bfd_elf32_arm_vfp11_erratum_scan (bfd *abfd, struct bfd_link_info *link_info)
|
|||
case 1:
|
||||
{
|
||||
int other_regs[3], other_numregs;
|
||||
pipe = bfd_arm_vfp11_insn_decode (insn, &writemask,
|
||||
vpipe = bfd_arm_vfp11_insn_decode (insn, &writemask,
|
||||
other_regs,
|
||||
&other_numregs);
|
||||
if (pipe != VFP11_BAD
|
||||
if (vpipe != VFP11_BAD
|
||||
&& bfd_arm_vfp11_antidependency (writemask, regs,
|
||||
numregs))
|
||||
state = 3;
|
||||
|
@ -6026,10 +6026,10 @@ bfd_elf32_arm_vfp11_erratum_scan (bfd *abfd, struct bfd_link_info *link_info)
|
|||
case 2:
|
||||
{
|
||||
int other_regs[3], other_numregs;
|
||||
pipe = bfd_arm_vfp11_insn_decode (insn, &writemask,
|
||||
vpipe = bfd_arm_vfp11_insn_decode (insn, &writemask,
|
||||
other_regs,
|
||||
&other_numregs);
|
||||
if (pipe != VFP11_BAD
|
||||
if (vpipe != VFP11_BAD
|
||||
&& bfd_arm_vfp11_antidependency (writemask, regs,
|
||||
numregs))
|
||||
state = 3;
|
||||
|
@ -9044,9 +9044,9 @@ elf32_arm_relocate_section (bfd * output_bfd,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* Add a new unwind edit to the list described by HEAD, TAIL. If INDEX is zero,
|
||||
/* Add a new unwind edit to the list described by HEAD, TAIL. If TINDEX is zero,
|
||||
adds the edit to the start of the list. (The list must be built in order of
|
||||
ascending INDEX: the function's callers are primarily responsible for
|
||||
ascending TINDEX: the function's callers are primarily responsible for
|
||||
maintaining that condition). */
|
||||
|
||||
static void
|
||||
|
@ -9054,16 +9054,16 @@ add_unwind_table_edit (arm_unwind_table_edit **head,
|
|||
arm_unwind_table_edit **tail,
|
||||
arm_unwind_edit_type type,
|
||||
asection *linked_section,
|
||||
unsigned int index)
|
||||
unsigned int tindex)
|
||||
{
|
||||
arm_unwind_table_edit *new_edit = (arm_unwind_table_edit *)
|
||||
xmalloc (sizeof (arm_unwind_table_edit));
|
||||
|
||||
new_edit->type = type;
|
||||
new_edit->linked_section = linked_section;
|
||||
new_edit->index = index;
|
||||
new_edit->index = tindex;
|
||||
|
||||
if (index > 0)
|
||||
if (tindex > 0)
|
||||
{
|
||||
new_edit->next = NULL;
|
||||
|
||||
|
@ -9173,8 +9173,7 @@ elf32_arm_fix_exidx_coverage (asection **text_section_order,
|
|||
|
||||
/* Walk all text sections in order of increasing VMA. Eilminate duplicate
|
||||
index table entries (EXIDX_CANTUNWIND and inlined unwind opcodes),
|
||||
and add EXIDX_CANTUNWIND entries for sections with no unwind table data.
|
||||
*/
|
||||
and add EXIDX_CANTUNWIND entries for sections with no unwind table data. */
|
||||
|
||||
for (i = 0; i < num_text_sections; i++)
|
||||
{
|
||||
|
@ -13166,7 +13165,7 @@ make_branch_to_a8_stub (struct bfd_hash_entry *gen_entry,
|
|||
bfd_vma veneered_insn_loc, veneer_entry_loc;
|
||||
bfd_signed_vma branch_offset;
|
||||
bfd *abfd;
|
||||
unsigned int index;
|
||||
unsigned int target;
|
||||
|
||||
stub_entry = (struct elf32_arm_stub_hash_entry *) gen_entry;
|
||||
data = (struct a8_branch_to_stub_data *) in_arg;
|
||||
|
@ -13191,7 +13190,7 @@ make_branch_to_a8_stub (struct bfd_hash_entry *gen_entry,
|
|||
branch_offset = veneer_entry_loc - veneered_insn_loc - 4;
|
||||
|
||||
abfd = stub_entry->target_section->owner;
|
||||
index = stub_entry->target_value;
|
||||
target = stub_entry->target_value;
|
||||
|
||||
/* We attempt to avoid this condition by setting stubs_always_after_branch
|
||||
in elf32_arm_size_stubs if we've enabled the Cortex-A8 erratum workaround.
|
||||
|
@ -13252,8 +13251,8 @@ make_branch_to_a8_stub (struct bfd_hash_entry *gen_entry,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bfd_put_16 (abfd, (branch_insn >> 16) & 0xffff, &contents[index]);
|
||||
bfd_put_16 (abfd, branch_insn & 0xffff, &contents[index + 2]);
|
||||
bfd_put_16 (abfd, (branch_insn >> 16) & 0xffff, &contents[target]);
|
||||
bfd_put_16 (abfd, branch_insn & 0xffff, &contents[target + 2]);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -13295,7 +13294,7 @@ elf32_arm_write_section (bfd *output_bfd,
|
|||
for (errnode = arm_data->erratumlist; errnode != 0;
|
||||
errnode = errnode->next)
|
||||
{
|
||||
bfd_vma index = errnode->vma - offset;
|
||||
bfd_vma target = errnode->vma - offset;
|
||||
|
||||
switch (errnode->type)
|
||||
{
|
||||
|
@ -13308,7 +13307,7 @@ elf32_arm_write_section (bfd *output_bfd,
|
|||
| 0x0a000000;
|
||||
|
||||
/* The instruction is before the label. */
|
||||
index -= 4;
|
||||
target -= 4;
|
||||
|
||||
/* Above offset included in -4 below. */
|
||||
branch_to_veneer = errnode->u.b.veneer->vma
|
||||
|
@ -13320,10 +13319,10 @@ elf32_arm_write_section (bfd *output_bfd,
|
|||
"range"), output_bfd);
|
||||
|
||||
insn |= (branch_to_veneer >> 2) & 0xffffff;
|
||||
contents[endianflip ^ index] = insn & 0xff;
|
||||
contents[endianflip ^ (index + 1)] = (insn >> 8) & 0xff;
|
||||
contents[endianflip ^ (index + 2)] = (insn >> 16) & 0xff;
|
||||
contents[endianflip ^ (index + 3)] = (insn >> 24) & 0xff;
|
||||
contents[endianflip ^ target] = insn & 0xff;
|
||||
contents[endianflip ^ (target + 1)] = (insn >> 8) & 0xff;
|
||||
contents[endianflip ^ (target + 2)] = (insn >> 16) & 0xff;
|
||||
contents[endianflip ^ (target + 3)] = (insn >> 24) & 0xff;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -13343,17 +13342,17 @@ elf32_arm_write_section (bfd *output_bfd,
|
|||
|
||||
/* Original instruction. */
|
||||
insn = errnode->u.v.branch->u.b.vfp_insn;
|
||||
contents[endianflip ^ index] = insn & 0xff;
|
||||
contents[endianflip ^ (index + 1)] = (insn >> 8) & 0xff;
|
||||
contents[endianflip ^ (index + 2)] = (insn >> 16) & 0xff;
|
||||
contents[endianflip ^ (index + 3)] = (insn >> 24) & 0xff;
|
||||
contents[endianflip ^ target] = insn & 0xff;
|
||||
contents[endianflip ^ (target + 1)] = (insn >> 8) & 0xff;
|
||||
contents[endianflip ^ (target + 2)] = (insn >> 16) & 0xff;
|
||||
contents[endianflip ^ (target + 3)] = (insn >> 24) & 0xff;
|
||||
|
||||
/* Branch back to insn after original insn. */
|
||||
insn = 0xea000000 | ((branch_from_veneer >> 2) & 0xffffff);
|
||||
contents[endianflip ^ (index + 4)] = insn & 0xff;
|
||||
contents[endianflip ^ (index + 5)] = (insn >> 8) & 0xff;
|
||||
contents[endianflip ^ (index + 6)] = (insn >> 16) & 0xff;
|
||||
contents[endianflip ^ (index + 7)] = (insn >> 24) & 0xff;
|
||||
contents[endianflip ^ (target + 4)] = insn & 0xff;
|
||||
contents[endianflip ^ (target + 5)] = (insn >> 8) & 0xff;
|
||||
contents[endianflip ^ (target + 6)] = (insn >> 16) & 0xff;
|
||||
contents[endianflip ^ (target + 7)] = (insn >> 24) & 0xff;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
326
bfd/elf32-avr.c
326
bfd/elf32-avr.c
|
@ -775,14 +775,14 @@ static bfd_vma
|
|||
avr_get_stub_addr (bfd_vma srel,
|
||||
struct elf32_avr_link_hash_table *htab)
|
||||
{
|
||||
unsigned int index;
|
||||
unsigned int sindex;
|
||||
bfd_vma stub_sec_addr =
|
||||
(htab->stub_sec->output_section->vma +
|
||||
htab->stub_sec->output_offset);
|
||||
|
||||
for (index = 0; index < htab->amt_max_entry_cnt; index ++)
|
||||
if (htab->amt_destination_addr[index] == srel)
|
||||
return htab->amt_stub_offsets[index] + stub_sec_addr;
|
||||
for (sindex = 0; sindex < htab->amt_max_entry_cnt; sindex ++)
|
||||
if (htab->amt_destination_addr[sindex] == srel)
|
||||
return htab->amt_stub_offsets[sindex] + stub_sec_addr;
|
||||
|
||||
/* Return an address that could not be reached by 16 bit relocs. */
|
||||
return 0x020000;
|
||||
|
@ -1510,7 +1510,6 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
|
|||
if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
|
||||
{
|
||||
/* A local symbol. */
|
||||
Elf_Internal_Sym *isym;
|
||||
asection *sym_sec;
|
||||
|
||||
isym = isymbuf + ELF32_R_SYM (irel->r_info);
|
||||
|
@ -1703,8 +1702,8 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
bfd_vma symval;
|
||||
|
||||
if ( ELF32_R_TYPE (irel->r_info) != R_AVR_13_PCREL
|
||||
&& ELF32_R_TYPE (irel->r_info) != R_AVR_7_PCREL
|
||||
&& ELF32_R_TYPE (irel->r_info) != R_AVR_CALL)
|
||||
&& ELF32_R_TYPE (irel->r_info) != R_AVR_7_PCREL
|
||||
&& ELF32_R_TYPE (irel->r_info) != R_AVR_CALL)
|
||||
continue;
|
||||
|
||||
/* Get the section contents if we haven't done so already. */
|
||||
|
@ -1721,7 +1720,7 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
}
|
||||
}
|
||||
|
||||
/* Read this BFD's local symbols if we haven't done so already. */
|
||||
/* Read this BFD's local symbols if we haven't done so already. */
|
||||
if (isymbuf == NULL && symtab_hdr->sh_info != 0)
|
||||
{
|
||||
isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
|
||||
|
@ -1780,9 +1779,9 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
the linker is run. */
|
||||
switch (ELF32_R_TYPE (irel->r_info))
|
||||
{
|
||||
/* Try to turn a 22-bit absolute call/jump into an 13-bit
|
||||
pc-relative rcall/rjmp. */
|
||||
case R_AVR_CALL:
|
||||
/* Try to turn a 22-bit absolute call/jump into an 13-bit
|
||||
pc-relative rcall/rjmp. */
|
||||
case R_AVR_CALL:
|
||||
{
|
||||
bfd_vma value = symval + irel->r_addend;
|
||||
bfd_vma dot, gap;
|
||||
|
@ -1807,27 +1806,27 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
vaiable avr_pc_wrap_around with the appropriate value.
|
||||
I.e. 0x4000 for a 16k device. */
|
||||
{
|
||||
/* Shrinking the code size makes the gaps larger in the
|
||||
case of wrap-arounds. So we use a heuristical safety
|
||||
margin to avoid that during relax the distance gets
|
||||
again too large for the short jumps. Let's assume
|
||||
a typical code-size reduction due to relax for a
|
||||
16k device of 600 bytes. So let's use twice the
|
||||
typical value as safety margin. */
|
||||
int rgap;
|
||||
int safety_margin;
|
||||
/* Shrinking the code size makes the gaps larger in the
|
||||
case of wrap-arounds. So we use a heuristical safety
|
||||
margin to avoid that during relax the distance gets
|
||||
again too large for the short jumps. Let's assume
|
||||
a typical code-size reduction due to relax for a
|
||||
16k device of 600 bytes. So let's use twice the
|
||||
typical value as safety margin. */
|
||||
int rgap;
|
||||
int safety_margin;
|
||||
|
||||
int assumed_shrink = 600;
|
||||
if (avr_pc_wrap_around > 0x4000)
|
||||
assumed_shrink = 900;
|
||||
int assumed_shrink = 600;
|
||||
if (avr_pc_wrap_around > 0x4000)
|
||||
assumed_shrink = 900;
|
||||
|
||||
safety_margin = 2 * assumed_shrink;
|
||||
safety_margin = 2 * assumed_shrink;
|
||||
|
||||
rgap = avr_relative_distance_considering_wrap_around (gap);
|
||||
rgap = avr_relative_distance_considering_wrap_around (gap);
|
||||
|
||||
if (rgap >= (-4092 + safety_margin)
|
||||
&& rgap <= (4094 - safety_margin))
|
||||
distance_short_enough = 1;
|
||||
if (rgap >= (-4092 + safety_margin)
|
||||
&& rgap <= (4094 - safety_margin))
|
||||
distance_short_enough = 1;
|
||||
}
|
||||
|
||||
if (distance_short_enough)
|
||||
|
@ -1921,9 +1920,9 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
if (irel->r_offset + 3 < sec->size)
|
||||
{
|
||||
next_insn_msb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 3);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 3);
|
||||
next_insn_lsb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 2);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 2);
|
||||
}
|
||||
|
||||
if ((0x95 == next_insn_msb) && (0x08 == next_insn_lsb))
|
||||
|
@ -1951,9 +1950,9 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
if (irel->r_offset + 5 < sec->size)
|
||||
{
|
||||
next_insn_msb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 5);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 5);
|
||||
next_insn_lsb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 4);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset + 4);
|
||||
}
|
||||
|
||||
if ((0x95 == next_insn_msb) && (0x08 == next_insn_lsb))
|
||||
|
@ -1988,11 +1987,11 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
if (irel->r_offset + insn_size + 1 < sec->size)
|
||||
{
|
||||
next_insn_msb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset
|
||||
+ insn_size + 1);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset
|
||||
+ insn_size + 1);
|
||||
next_insn_lsb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset
|
||||
+ insn_size);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset
|
||||
+ insn_size);
|
||||
}
|
||||
|
||||
if ((0x95 == next_insn_msb) && (0x08 == next_insn_lsb))
|
||||
|
@ -2019,9 +2018,9 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
unsigned char preceeding_msb;
|
||||
unsigned char preceeding_lsb;
|
||||
preceeding_msb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset - 1);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset - 1);
|
||||
preceeding_lsb =
|
||||
bfd_get_8 (abfd, contents + irel->r_offset - 2);
|
||||
bfd_get_8 (abfd, contents + irel->r_offset - 2);
|
||||
|
||||
/* sbic. */
|
||||
if (0x99 == preceeding_msb)
|
||||
|
@ -2033,12 +2032,12 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
|
||||
/* sbrc */
|
||||
if ((0xfc == (preceeding_msb & 0xfe)
|
||||
&& (0x00 == (preceeding_lsb & 0x08))))
|
||||
&& (0x00 == (preceeding_lsb & 0x08))))
|
||||
there_is_preceeding_non_skip_insn = 0;
|
||||
|
||||
/* sbrs */
|
||||
if ((0xfe == (preceeding_msb & 0xfe)
|
||||
&& (0x00 == (preceeding_lsb & 0x08))))
|
||||
&& (0x00 == (preceeding_lsb & 0x08))))
|
||||
there_is_preceeding_non_skip_insn = 0;
|
||||
|
||||
/* cpse */
|
||||
|
@ -2066,7 +2065,7 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
|
||||
int deleting_ret_is_safe = 1;
|
||||
unsigned int section_offset_of_ret_insn =
|
||||
irel->r_offset + insn_size;
|
||||
irel->r_offset + insn_size;
|
||||
Elf_Internal_Sym *isym, *isymend;
|
||||
unsigned int sec_shndx;
|
||||
|
||||
|
@ -2078,145 +2077,140 @@ elf32_avr_relax_section (bfd *abfd,
|
|||
isymend = isym + symtab_hdr->sh_info;
|
||||
/* PR 6019: There may not be any local symbols. */
|
||||
for (; isym != NULL && isym < isymend; isym++)
|
||||
{
|
||||
if (isym->st_value == section_offset_of_ret_insn
|
||||
&& isym->st_shndx == sec_shndx)
|
||||
{
|
||||
deleting_ret_is_safe = 0;
|
||||
if (debug_relax)
|
||||
printf ("local label prevents deletion of ret "
|
||||
"insn at address 0x%x\n",
|
||||
(int) dot + insn_size);
|
||||
}
|
||||
}
|
||||
{
|
||||
if (isym->st_value == section_offset_of_ret_insn
|
||||
&& isym->st_shndx == sec_shndx)
|
||||
{
|
||||
deleting_ret_is_safe = 0;
|
||||
if (debug_relax)
|
||||
printf ("local label prevents deletion of ret "
|
||||
"insn at address 0x%x\n",
|
||||
(int) dot + insn_size);
|
||||
}
|
||||
}
|
||||
|
||||
/* Now check for global symbols. */
|
||||
{
|
||||
int symcount;
|
||||
struct elf_link_hash_entry **sym_hashes;
|
||||
struct elf_link_hash_entry **end_hashes;
|
||||
/* Now check for global symbols. */
|
||||
{
|
||||
int symcount;
|
||||
struct elf_link_hash_entry **sym_hashes;
|
||||
struct elf_link_hash_entry **end_hashes;
|
||||
|
||||
symcount = (symtab_hdr->sh_size
|
||||
/ sizeof (Elf32_External_Sym)
|
||||
- symtab_hdr->sh_info);
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
end_hashes = sym_hashes + symcount;
|
||||
for (; sym_hashes < end_hashes; sym_hashes++)
|
||||
{
|
||||
struct elf_link_hash_entry *sym_hash =
|
||||
*sym_hashes;
|
||||
if ((sym_hash->root.type == bfd_link_hash_defined
|
||||
|| sym_hash->root.type ==
|
||||
symcount = (symtab_hdr->sh_size
|
||||
/ sizeof (Elf32_External_Sym)
|
||||
- symtab_hdr->sh_info);
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
end_hashes = sym_hashes + symcount;
|
||||
for (; sym_hashes < end_hashes; sym_hashes++)
|
||||
{
|
||||
struct elf_link_hash_entry *sym_hash =
|
||||
*sym_hashes;
|
||||
if ((sym_hash->root.type == bfd_link_hash_defined
|
||||
|| sym_hash->root.type ==
|
||||
bfd_link_hash_defweak)
|
||||
&& sym_hash->root.u.def.section == sec
|
||||
&& sym_hash->root.u.def.value == section_offset_of_ret_insn)
|
||||
{
|
||||
deleting_ret_is_safe = 0;
|
||||
if (debug_relax)
|
||||
printf ("global label prevents deletion of "
|
||||
"ret insn at address 0x%x\n",
|
||||
(int) dot + insn_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Now we check for relocations pointing to ret. */
|
||||
{
|
||||
Elf_Internal_Rela *irel;
|
||||
Elf_Internal_Rela *relend;
|
||||
Elf_Internal_Shdr *symtab_hdr;
|
||||
&& sym_hash->root.u.def.section == sec
|
||||
&& sym_hash->root.u.def.value == section_offset_of_ret_insn)
|
||||
{
|
||||
deleting_ret_is_safe = 0;
|
||||
if (debug_relax)
|
||||
printf ("global label prevents deletion of "
|
||||
"ret insn at address 0x%x\n",
|
||||
(int) dot + insn_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Now we check for relocations pointing to ret. */
|
||||
{
|
||||
Elf_Internal_Rela *rel;
|
||||
Elf_Internal_Rela *relend;
|
||||
|
||||
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
relend = elf_section_data (sec)->relocs
|
||||
+ sec->reloc_count;
|
||||
relend = elf_section_data (sec)->relocs
|
||||
+ sec->reloc_count;
|
||||
|
||||
for (irel = elf_section_data (sec)->relocs;
|
||||
irel < relend; irel++)
|
||||
{
|
||||
bfd_vma reloc_target = 0;
|
||||
bfd_vma symval;
|
||||
Elf_Internal_Sym *isymbuf = NULL;
|
||||
for (rel = elf_section_data (sec)->relocs;
|
||||
rel < relend; rel++)
|
||||
{
|
||||
bfd_vma reloc_target = 0;
|
||||
|
||||
/* Read this BFD's local symbols if we haven't
|
||||
done so already. */
|
||||
if (isymbuf == NULL && symtab_hdr->sh_info != 0)
|
||||
{
|
||||
isymbuf = (Elf_Internal_Sym *)
|
||||
symtab_hdr->contents;
|
||||
if (isymbuf == NULL)
|
||||
isymbuf = bfd_elf_get_elf_syms
|
||||
(abfd,
|
||||
symtab_hdr,
|
||||
symtab_hdr->sh_info, 0,
|
||||
NULL, NULL, NULL);
|
||||
if (isymbuf == NULL)
|
||||
break;
|
||||
}
|
||||
/* Read this BFD's local symbols if we haven't
|
||||
done so already. */
|
||||
if (isymbuf == NULL && symtab_hdr->sh_info != 0)
|
||||
{
|
||||
isymbuf = (Elf_Internal_Sym *)
|
||||
symtab_hdr->contents;
|
||||
if (isymbuf == NULL)
|
||||
isymbuf = bfd_elf_get_elf_syms
|
||||
(abfd,
|
||||
symtab_hdr,
|
||||
symtab_hdr->sh_info, 0,
|
||||
NULL, NULL, NULL);
|
||||
if (isymbuf == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Get the value of the symbol referred to
|
||||
by the reloc. */
|
||||
if (ELF32_R_SYM (irel->r_info)
|
||||
< symtab_hdr->sh_info)
|
||||
{
|
||||
/* A local symbol. */
|
||||
Elf_Internal_Sym *isym;
|
||||
asection *sym_sec;
|
||||
/* Get the value of the symbol referred to
|
||||
by the reloc. */
|
||||
if (ELF32_R_SYM (rel->r_info)
|
||||
< symtab_hdr->sh_info)
|
||||
{
|
||||
/* A local symbol. */
|
||||
asection *sym_sec;
|
||||
|
||||
isym = isymbuf
|
||||
+ ELF32_R_SYM (irel->r_info);
|
||||
sym_sec = bfd_section_from_elf_index
|
||||
(abfd, isym->st_shndx);
|
||||
symval = isym->st_value;
|
||||
isym = isymbuf
|
||||
+ ELF32_R_SYM (rel->r_info);
|
||||
sym_sec = bfd_section_from_elf_index
|
||||
(abfd, isym->st_shndx);
|
||||
symval = isym->st_value;
|
||||
|
||||
/* If the reloc is absolute, it will not
|
||||
have a symbol or section associated
|
||||
with it. */
|
||||
/* If the reloc is absolute, it will not
|
||||
have a symbol or section associated
|
||||
with it. */
|
||||
|
||||
if (sym_sec)
|
||||
{
|
||||
symval +=
|
||||
sym_sec->output_section->vma
|
||||
+ sym_sec->output_offset;
|
||||
reloc_target = symval + irel->r_addend;
|
||||
}
|
||||
else
|
||||
{
|
||||
reloc_target = symval + irel->r_addend;
|
||||
/* Reference symbol is absolute. */
|
||||
}
|
||||
}
|
||||
/* else ... reference symbol is extern. */
|
||||
if (sym_sec)
|
||||
{
|
||||
symval +=
|
||||
sym_sec->output_section->vma
|
||||
+ sym_sec->output_offset;
|
||||
reloc_target = symval + rel->r_addend;
|
||||
}
|
||||
else
|
||||
{
|
||||
reloc_target = symval + rel->r_addend;
|
||||
/* Reference symbol is absolute. */
|
||||
}
|
||||
}
|
||||
/* else ... reference symbol is extern. */
|
||||
|
||||
if (address_of_ret == reloc_target)
|
||||
{
|
||||
deleting_ret_is_safe = 0;
|
||||
if (debug_relax)
|
||||
printf ("ret from "
|
||||
"rjmp/jmp ret sequence at address"
|
||||
" 0x%x could not be deleted. ret"
|
||||
" is target of a relocation.\n",
|
||||
(int) address_of_ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (address_of_ret == reloc_target)
|
||||
{
|
||||
deleting_ret_is_safe = 0;
|
||||
if (debug_relax)
|
||||
printf ("ret from "
|
||||
"rjmp/jmp ret sequence at address"
|
||||
" 0x%x could not be deleted. ret"
|
||||
" is target of a relocation.\n",
|
||||
(int) address_of_ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (deleting_ret_is_safe)
|
||||
{
|
||||
if (debug_relax)
|
||||
printf ("unreachable ret instruction "
|
||||
"at address 0x%x deleted.\n",
|
||||
(int) dot + insn_size);
|
||||
if (deleting_ret_is_safe)
|
||||
{
|
||||
if (debug_relax)
|
||||
printf ("unreachable ret instruction "
|
||||
"at address 0x%x deleted.\n",
|
||||
(int) dot + insn_size);
|
||||
|
||||
/* Delete two bytes of data. */
|
||||
if (!elf32_avr_relax_delete_bytes (abfd, sec,
|
||||
irel->r_offset + insn_size, 2))
|
||||
goto error_return;
|
||||
/* Delete two bytes of data. */
|
||||
if (!elf32_avr_relax_delete_bytes (abfd, sec,
|
||||
irel->r_offset + insn_size, 2))
|
||||
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;
|
||||
break;
|
||||
}
|
||||
/* That will change things, so, we should relax
|
||||
again. Note that this is not required, and it
|
||||
may be slow. */
|
||||
*again = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3481,7 +3481,6 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
|||
{
|
||||
/* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
|
||||
.plt section. */
|
||||
struct elf_link_hash_entry *h;
|
||||
struct bfd_link_hash_entry *bh = NULL;
|
||||
|
||||
if (! (_bfd_generic_link_add_one_symbol
|
||||
|
|
|
@ -889,17 +889,12 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
|||
unsigned short r_type = howto->type;
|
||||
bfd_byte *hit_data = contents + offset;
|
||||
bfd_vma reloc_bits, check, Rvalue1;
|
||||
|
||||
bfd * dynobj;
|
||||
bfd_vma * local_got_offsets;
|
||||
asection * sgot;
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
local_got_offsets = elf_local_got_offsets (input_bfd);
|
||||
|
||||
sgot = NULL;
|
||||
|
||||
|
||||
switch (r_type)
|
||||
{
|
||||
case R_CR16_IMM4:
|
||||
|
|
|
@ -1669,7 +1669,6 @@ elf_i386_check_relocs (bfd *abfd,
|
|||
easily. Oh well. */
|
||||
void **vpp;
|
||||
asection *s;
|
||||
Elf_Internal_Sym *isym;
|
||||
|
||||
isym = bfd_sym_from_r_symndx (&htab->sym_cache,
|
||||
abfd, r_symndx);
|
||||
|
@ -2665,7 +2664,7 @@ elf_i386_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
Elf_Internal_Shdr *hdr,
|
||||
asection *sec)
|
||||
{
|
||||
register const char *name;
|
||||
const char *name;
|
||||
|
||||
name = bfd_get_section_name (abfd, sec);
|
||||
|
||||
|
@ -3610,7 +3609,7 @@ elf_i386_relocate_section (bfd *output_bfd,
|
|||
{
|
||||
Elf_Internal_Rela outrel;
|
||||
bfd_byte *loc;
|
||||
int dr_type, indx;
|
||||
int dr_type;
|
||||
asection *sreloc;
|
||||
|
||||
if (htab->elf.srelgot == NULL)
|
||||
|
@ -3939,7 +3938,6 @@ elf_i386_relocate_section (bfd *output_bfd,
|
|||
Elf_Internal_Rela outrel;
|
||||
asection *sreloc;
|
||||
bfd_byte *loc;
|
||||
int indx;
|
||||
|
||||
outrel.r_offset = rel->r_offset
|
||||
+ input_section->output_section->vma
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Ubicom IP2xxx specific support for 32-bit ELF
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
@ -347,7 +347,7 @@ ip2k_is_switch_table_128 (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
bfd_byte *contents)
|
||||
{
|
||||
bfd_byte code[4];
|
||||
int index = 0;
|
||||
int table_index = 0;
|
||||
|
||||
/* Check current page-jmp. */
|
||||
if (addr + 4 > sec->size)
|
||||
|
@ -369,13 +369,13 @@ ip2k_is_switch_table_128 (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
ip2k_get_mem (abfd, contents + addr - 4, 4, code);
|
||||
if ((IS_ADD_W_WREG_OPCODE (code + 0))
|
||||
&& (IS_ADD_PCL_W_OPCODE (code + 2)))
|
||||
return index;
|
||||
return table_index;
|
||||
|
||||
if ((! IS_PAGE_OPCODE (code + 0))
|
||||
|| (! IS_JMP_OPCODE (code + 2)))
|
||||
return -1;
|
||||
|
||||
index++;
|
||||
table_index++;
|
||||
addr -= 4;
|
||||
}
|
||||
}
|
||||
|
@ -427,7 +427,7 @@ ip2k_is_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
bfd_byte *contents)
|
||||
{
|
||||
bfd_byte code[16];
|
||||
int index = 0;
|
||||
int table_index = 0;
|
||||
|
||||
/* Check current page-jmp. */
|
||||
if (addr + 4 > sec->size)
|
||||
|
@ -454,7 +454,7 @@ ip2k_is_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
&& (IS_INC_1SP_OPCODE (code + 10))
|
||||
&& (IS_PAGE_OPCODE (code + 12))
|
||||
&& (IS_JMP_OPCODE (code + 14)))
|
||||
return index;
|
||||
return table_index;
|
||||
|
||||
if ((IS_ADD_W_WREG_OPCODE (code + 2))
|
||||
&& (IS_SNC_OPCODE (code + 4))
|
||||
|
@ -463,13 +463,13 @@ ip2k_is_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
&& (IS_SNC_OPCODE (code + 10))
|
||||
&& (IS_INC_1SP_OPCODE (code + 12))
|
||||
&& (IS_JMP_OPCODE (code + 14)))
|
||||
return index;
|
||||
return table_index;
|
||||
|
||||
if ((! IS_PAGE_OPCODE (code + 0))
|
||||
|| (! IS_JMP_OPCODE (code + 2)))
|
||||
return -1;
|
||||
|
||||
index++;
|
||||
table_index++;
|
||||
addr -= 4;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1130,10 +1130,8 @@ lm32_elf_relocate_section (bfd *output_bfd,
|
|||
|
||||
if (r != bfd_reloc_ok)
|
||||
{
|
||||
const char *name;
|
||||
const char *msg = NULL;
|
||||
arelent bfd_reloc;
|
||||
reloc_howto_type *howto;
|
||||
|
||||
lm32_info_to_howto_rela (input_bfd, &bfd_reloc, rel);
|
||||
howto = bfd_reloc.howto;
|
||||
|
|
|
@ -379,7 +379,6 @@ elf32_m68hc11_size_stubs (bfd *output_bfd, bfd *stub_bfd,
|
|||
input_bfd = input_bfd->link_next, bfd_indx++)
|
||||
{
|
||||
Elf_Internal_Shdr *symtab_hdr;
|
||||
Elf_Internal_Sym *local_syms;
|
||||
struct elf_link_hash_entry ** sym_hashes;
|
||||
|
||||
sym_hashes = elf_sym_hashes (input_bfd);
|
||||
|
|
|
@ -1284,7 +1284,7 @@ microblaze_elf_relax_section (bfd *abfd,
|
|||
bfd_byte *free_contents = NULL;
|
||||
int rel_count;
|
||||
unsigned int shndx;
|
||||
int i, index;
|
||||
int i, sym_index;
|
||||
asection *o;
|
||||
struct elf_link_hash_entry *sym_hash;
|
||||
Elf_Internal_Sym *isymbuf, *isymend;
|
||||
|
@ -1319,8 +1319,7 @@ microblaze_elf_relax_section (bfd *abfd,
|
|||
0, NULL, NULL, NULL);
|
||||
BFD_ASSERT (isymbuf != NULL);
|
||||
|
||||
internal_relocs = _bfd_elf_link_read_relocs
|
||||
(abfd, sec, NULL, NULL, link_info->keep_memory);
|
||||
internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, link_info->keep_memory);
|
||||
if (internal_relocs == NULL)
|
||||
goto error_return;
|
||||
if (! link_info->keep_memory)
|
||||
|
@ -1364,7 +1363,6 @@ microblaze_elf_relax_section (bfd *abfd,
|
|||
if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
|
||||
{
|
||||
/* A local symbol. */
|
||||
Elf_Internal_Sym *isym;
|
||||
asection *sym_sec;
|
||||
|
||||
isym = isymbuf + ELF32_R_SYM (irel->r_info);
|
||||
|
@ -1464,7 +1462,6 @@ microblaze_elf_relax_section (bfd *abfd,
|
|||
range to be adjusted, and hence must be changed. */
|
||||
if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
|
||||
{
|
||||
Elf_Internal_Sym *isym;
|
||||
isym = isymbuf + ELF32_R_SYM (irel->r_info);
|
||||
/* Only handle relocs against .text. */
|
||||
if (isym->st_shndx == shndx
|
||||
|
@ -1507,7 +1504,7 @@ microblaze_elf_relax_section (bfd *abfd,
|
|||
/* Look through all other sections. */
|
||||
for (o = abfd->sections; o != NULL; o = o->next)
|
||||
{
|
||||
Elf_Internal_Rela *internal_relocs;
|
||||
Elf_Internal_Rela *irelocs;
|
||||
Elf_Internal_Rela *irelscan, *irelscanend;
|
||||
bfd_byte *ocontents;
|
||||
|
||||
|
@ -1519,13 +1516,13 @@ microblaze_elf_relax_section (bfd *abfd,
|
|||
/* We always cache the relocs. Perhaps, if info->keep_memory is
|
||||
FALSE, we should free them, if we are permitted to. */
|
||||
|
||||
internal_relocs = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, TRUE);
|
||||
if (internal_relocs == NULL)
|
||||
irelocs = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, TRUE);
|
||||
if (irelocs == NULL)
|
||||
goto error_return;
|
||||
|
||||
ocontents = NULL;
|
||||
irelscanend = internal_relocs + o->reloc_count;
|
||||
for (irelscan = internal_relocs; irelscan < irelscanend; irelscan++)
|
||||
irelscanend = irelocs + o->reloc_count;
|
||||
for (irelscan = irelocs; irelscan < irelscanend; irelscan++)
|
||||
{
|
||||
if (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32)
|
||||
{
|
||||
|
@ -1745,9 +1742,9 @@ microblaze_elf_relax_section (bfd *abfd,
|
|||
/* Now adjust the global symbols defined in this section. */
|
||||
isym = isymbuf + symtab_hdr->sh_info;
|
||||
isymend = isymbuf + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym));
|
||||
for (index = 0; isym < isymend; isym++, index++)
|
||||
for (sym_index = 0; isym < isymend; isym++, sym_index++)
|
||||
{
|
||||
sym_hash = elf_sym_hashes (abfd)[index];
|
||||
sym_hash = elf_sym_hashes (abfd)[sym_index];
|
||||
if (isym->st_shndx == shndx
|
||||
&& (sym_hash->root.type == bfd_link_hash_defined
|
||||
|| sym_hash->root.type == bfd_link_hash_defweak)
|
||||
|
|
|
@ -3961,7 +3961,7 @@ ppc_elf_check_relocs (bfd *abfd,
|
|||
|| !h->def_regular)))
|
||||
{
|
||||
struct ppc_elf_dyn_relocs *p;
|
||||
struct ppc_elf_dyn_relocs **head;
|
||||
struct ppc_elf_dyn_relocs **rel_head;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr,
|
||||
|
@ -3986,7 +3986,7 @@ ppc_elf_check_relocs (bfd *abfd,
|
|||
relocations we need for this symbol. */
|
||||
if (h != NULL)
|
||||
{
|
||||
head = &ppc_elf_hash_entry (h)->dyn_relocs;
|
||||
rel_head = &ppc_elf_hash_entry (h)->dyn_relocs;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4007,17 +4007,17 @@ ppc_elf_check_relocs (bfd *abfd,
|
|||
s = sec;
|
||||
|
||||
vpp = &elf_section_data (s)->local_dynrel;
|
||||
head = (struct ppc_elf_dyn_relocs **) vpp;
|
||||
rel_head = (struct ppc_elf_dyn_relocs **) vpp;
|
||||
}
|
||||
|
||||
p = *head;
|
||||
p = *rel_head;
|
||||
if (p == NULL || p->sec != sec)
|
||||
{
|
||||
p = bfd_alloc (htab->elf.dynobj, sizeof *p);
|
||||
if (p == NULL)
|
||||
return FALSE;
|
||||
p->next = *head;
|
||||
*head = p;
|
||||
p->next = *rel_head;
|
||||
*rel_head = p;
|
||||
p->sec = sec;
|
||||
p->count = 0;
|
||||
p->pc_count = 0;
|
||||
|
@ -5619,6 +5619,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
|||
local_plt = (struct plt_entry **) end_local_got;
|
||||
end_local_plt = local_plt + locsymcount;
|
||||
lgot_masks = (char *) end_local_plt;
|
||||
|
||||
for (; local_got < end_local_got; ++local_got, ++lgot_masks)
|
||||
if (*local_got > 0)
|
||||
{
|
||||
|
@ -5662,7 +5663,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
|||
for (ent = *local_plt; ent != NULL; ent = ent->next)
|
||||
if (ent->plt.refcount > 0)
|
||||
{
|
||||
asection *s = htab->iplt;
|
||||
s = htab->iplt;
|
||||
|
||||
if (!doneone)
|
||||
{
|
||||
|
@ -6018,7 +6019,7 @@ ppc_elf_relax_section (bfd *abfd,
|
|||
for (irel = internal_relocs; irel < irelend; irel++)
|
||||
{
|
||||
unsigned long r_type = ELF32_R_TYPE (irel->r_info);
|
||||
bfd_vma reladdr, toff, roff;
|
||||
bfd_vma toff, roff;
|
||||
asection *tsec;
|
||||
struct one_fixup *f;
|
||||
size_t insn_offset = 0;
|
||||
|
@ -6202,7 +6203,6 @@ ppc_elf_relax_section (bfd *abfd,
|
|||
continue;
|
||||
|
||||
roff = irel->r_offset;
|
||||
reladdr = isec->output_section->vma + isec->output_offset + roff;
|
||||
|
||||
/* If the branch is in range, no need to do anything. */
|
||||
if (tsec != bfd_und_section_ptr
|
||||
|
@ -6698,7 +6698,6 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||
Elf_Internal_Rela *rel;
|
||||
Elf_Internal_Rela *relend;
|
||||
Elf_Internal_Rela outrel;
|
||||
bfd_byte *loc;
|
||||
asection *got2, *sreloc = NULL;
|
||||
bfd_vma *local_got_offsets;
|
||||
bfd_boolean ret = TRUE;
|
||||
|
@ -6742,7 +6741,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||
reloc_howto_type *howto;
|
||||
unsigned long r_symndx;
|
||||
bfd_vma relocation;
|
||||
bfd_vma branch_bit, insn, from;
|
||||
bfd_vma branch_bit, from;
|
||||
bfd_boolean unresolved_reloc;
|
||||
bfd_boolean warned;
|
||||
unsigned int tls_type, tls_mask, tls_gd;
|
||||
|
@ -6840,6 +6839,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||
&& (tls_mask & TLS_TPREL) == 0)
|
||||
{
|
||||
bfd_vma insn;
|
||||
|
||||
insn = bfd_get_32 (output_bfd, contents + rel->r_offset - d_offset);
|
||||
insn &= 31 << 21;
|
||||
insn |= 0x3c020000; /* addis 0,2,0 */
|
||||
|
@ -7055,20 +7055,24 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||
/* Branch not taken prediction relocations. */
|
||||
case R_PPC_ADDR14_BRNTAKEN:
|
||||
case R_PPC_REL14_BRNTAKEN:
|
||||
insn = bfd_get_32 (output_bfd, contents + rel->r_offset);
|
||||
insn &= ~BRANCH_PREDICT_BIT;
|
||||
insn |= branch_bit;
|
||||
{
|
||||
bfd_vma insn;
|
||||
|
||||
from = (rel->r_offset
|
||||
+ input_section->output_offset
|
||||
+ input_section->output_section->vma);
|
||||
insn = bfd_get_32 (output_bfd, contents + rel->r_offset);
|
||||
insn &= ~BRANCH_PREDICT_BIT;
|
||||
insn |= branch_bit;
|
||||
|
||||
/* Invert 'y' bit if not the default. */
|
||||
if ((bfd_signed_vma) (relocation + rel->r_addend - from) < 0)
|
||||
insn ^= BRANCH_PREDICT_BIT;
|
||||
from = (rel->r_offset
|
||||
+ input_section->output_offset
|
||||
+ input_section->output_section->vma);
|
||||
|
||||
bfd_put_32 (output_bfd, insn, contents + rel->r_offset);
|
||||
break;
|
||||
/* Invert 'y' bit if not the default. */
|
||||
if ((bfd_signed_vma) (relocation + rel->r_addend - from) < 0)
|
||||
insn ^= BRANCH_PREDICT_BIT;
|
||||
|
||||
bfd_put_32 (output_bfd, insn, contents + rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ifunc = NULL;
|
||||
|
@ -7299,6 +7303,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||
|| h->root.type != bfd_link_hash_undefweak))
|
||||
{
|
||||
asection *rsec = htab->relgot;
|
||||
bfd_byte * loc;
|
||||
|
||||
outrel.r_offset = (htab->got->output_section->vma
|
||||
+ htab->got->output_offset
|
||||
|
@ -7530,7 +7535,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||
&& !h->def_regular))
|
||||
{
|
||||
int skip;
|
||||
|
||||
bfd_byte * loc;
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "ppc_elf_relocate_section needs to "
|
||||
"create relocation for %s\n",
|
||||
|
@ -7920,7 +7925,9 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||
}
|
||||
|
||||
if (r_type == R_PPC_EMB_SDA21)
|
||||
{ /* fill in register field */
|
||||
{
|
||||
bfd_vma insn; /* Fill in register field. */
|
||||
|
||||
insn = bfd_get_32 (output_bfd, contents + rel->r_offset);
|
||||
insn = (insn & ~RA_REGISTER_MASK) | (reg << RA_REGISTER_SHIFT);
|
||||
bfd_put_32 (output_bfd, insn, contents + rel->r_offset);
|
||||
|
|
|
@ -303,7 +303,7 @@ rx_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
|
|||
|
||||
static bfd_vma
|
||||
get_symbol_value (const char * name,
|
||||
bfd_reloc_status_type * stat,
|
||||
bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
bfd * input_bfd,
|
||||
asection * input_section,
|
||||
|
@ -317,7 +317,7 @@ get_symbol_value (const char * name,
|
|||
if (h == NULL
|
||||
|| (h->type != bfd_link_hash_defined
|
||||
&& h->type != bfd_link_hash_defweak))
|
||||
* stat = info->callbacks->undefined_symbol
|
||||
* status = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, offset, TRUE);
|
||||
else
|
||||
value = (h->u.def.value
|
||||
|
@ -328,7 +328,7 @@ get_symbol_value (const char * name,
|
|||
}
|
||||
|
||||
static bfd_vma
|
||||
get_gp (bfd_reloc_status_type * stat,
|
||||
get_gp (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
|
@ -339,14 +339,14 @@ get_gp (bfd_reloc_status_type * stat,
|
|||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("__gp", stat, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("__gp", status, info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
return cached_value;
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_romstart (bfd_reloc_status_type * stat,
|
||||
get_romstart (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
|
@ -357,14 +357,14 @@ get_romstart (bfd_reloc_status_type * stat,
|
|||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("_start", stat, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("_start", status, info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
return cached_value;
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_ramstart (bfd_reloc_status_type * stat,
|
||||
get_ramstart (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
|
@ -375,7 +375,7 @@ get_ramstart (bfd_reloc_status_type * stat,
|
|||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("__datastart", stat, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("__datastart", status, info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
return cached_value;
|
||||
|
@ -2062,9 +2062,9 @@ elf32_rx_relax_section (bfd * abfd,
|
|||
else if (code == 1 && symval/scale <= 31
|
||||
/* Decodable bits. */
|
||||
&& (insn[0] & 0xcc) == 0xcc
|
||||
/* width */
|
||||
/* Width. */
|
||||
&& (insn[0] & 0x30) != 3
|
||||
/* register MSBs */
|
||||
/* Register MSBs. */
|
||||
&& (insn[1] & 0x88) == 0x00)
|
||||
{
|
||||
int newrel = 0;
|
||||
|
|
|
@ -1755,7 +1755,7 @@ score_elf_local_got_index (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
|
|||
static bfd_vma
|
||||
score_elf_global_got_index (bfd *abfd, struct elf_link_hash_entry *h)
|
||||
{
|
||||
bfd_vma index;
|
||||
bfd_vma got_index;
|
||||
asection *sgot;
|
||||
struct score_got_info *g;
|
||||
long global_got_dynindx = 0;
|
||||
|
@ -1769,16 +1769,19 @@ score_elf_global_got_index (bfd *abfd, struct elf_link_hash_entry *h)
|
|||
indices into the GOT. That makes it easy to calculate the GOT
|
||||
offset. */
|
||||
BFD_ASSERT (h->dynindx >= global_got_dynindx);
|
||||
index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd));
|
||||
BFD_ASSERT (index < sgot->size);
|
||||
got_index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd));
|
||||
BFD_ASSERT (got_index < sgot->size);
|
||||
|
||||
return index;
|
||||
return got_index;
|
||||
}
|
||||
|
||||
/* Returns the offset for the entry at the INDEXth position in the GOT. */
|
||||
|
||||
static bfd_vma
|
||||
score_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd,
|
||||
bfd *input_bfd ATTRIBUTE_UNUSED, bfd_vma index)
|
||||
score_elf_got_offset_from_index (bfd *dynobj,
|
||||
bfd *output_bfd,
|
||||
bfd *input_bfd ATTRIBUTE_UNUSED,
|
||||
bfd_vma got_index)
|
||||
{
|
||||
asection *sgot;
|
||||
bfd_vma gp;
|
||||
|
@ -1787,7 +1790,7 @@ score_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd,
|
|||
g = score_elf_got_info (dynobj, &sgot);
|
||||
gp = _bfd_get_gp_value (output_bfd);
|
||||
|
||||
return sgot->output_section->vma + sgot->output_offset + index - gp;
|
||||
return sgot->output_section->vma + sgot->output_offset + got_index - gp;
|
||||
}
|
||||
|
||||
/* Follow indirect and warning hash entries so that each got entry
|
||||
|
|
|
@ -1650,7 +1650,7 @@ score_elf_local_got_index (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
|
|||
static bfd_vma
|
||||
score_elf_global_got_index (bfd *abfd, struct elf_link_hash_entry *h)
|
||||
{
|
||||
bfd_vma index;
|
||||
bfd_vma got_index;
|
||||
asection *sgot;
|
||||
struct score_got_info *g;
|
||||
long global_got_dynindx = 0;
|
||||
|
@ -1664,17 +1664,19 @@ score_elf_global_got_index (bfd *abfd, struct elf_link_hash_entry *h)
|
|||
indices into the GOT. That makes it easy to calculate the GOT
|
||||
offset. */
|
||||
BFD_ASSERT (h->dynindx >= global_got_dynindx);
|
||||
index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd));
|
||||
BFD_ASSERT (index < sgot->size);
|
||||
got_index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd));
|
||||
BFD_ASSERT (got_index < sgot->size);
|
||||
|
||||
return index;
|
||||
return got_index;
|
||||
}
|
||||
|
||||
/* Returns the offset for the entry at the INDEXth position in the GOT. */
|
||||
|
||||
static bfd_vma
|
||||
score_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd,
|
||||
bfd *input_bfd ATTRIBUTE_UNUSED, bfd_vma index)
|
||||
score_elf_got_offset_from_index (bfd *dynobj,
|
||||
bfd *output_bfd,
|
||||
bfd *input_bfd ATTRIBUTE_UNUSED,
|
||||
bfd_vma got_index)
|
||||
{
|
||||
asection *sgot;
|
||||
bfd_vma gp;
|
||||
|
@ -1683,7 +1685,7 @@ score_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd,
|
|||
g = score_elf_got_info (dynobj, &sgot);
|
||||
gp = _bfd_get_gp_value (output_bfd);
|
||||
|
||||
return sgot->output_section->vma + sgot->output_offset + index - gp;
|
||||
return sgot->output_section->vma + sgot->output_offset + got_index - gp;
|
||||
}
|
||||
|
||||
/* Follow indirect and warning hash entries so that each got entry
|
||||
|
@ -2512,7 +2514,6 @@ s7_bfd_score_elf_relocate_section (bfd *output_bfd,
|
|||
|
||||
if (r_type == R_SCORE_GOT15)
|
||||
{
|
||||
const Elf_Internal_Rela *relend;
|
||||
const Elf_Internal_Rela *lo16_rel;
|
||||
const struct elf_backend_data *bed;
|
||||
bfd_vma lo_addend = 0, lo_value = 0;
|
||||
|
|
|
@ -2089,9 +2089,9 @@ get_plt_index (const struct elf_sh_plt_info *info, bfd_vma offset)
|
|||
/* Do the inverse operation. */
|
||||
|
||||
static bfd_vma
|
||||
get_plt_offset (const struct elf_sh_plt_info *info, bfd_vma index)
|
||||
get_plt_offset (const struct elf_sh_plt_info *info, bfd_vma plt_index)
|
||||
{
|
||||
return info->plt0_entry_size + (index * info->symbol_entry_size);
|
||||
return info->plt0_entry_size + (plt_index * info->symbol_entry_size);
|
||||
}
|
||||
|
||||
/* The sh linker needs to keep track of the number of relocs that it
|
||||
|
@ -2316,7 +2316,7 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
|||
{
|
||||
struct elf_sh_link_hash_table *htab;
|
||||
flagword flags, pltflags;
|
||||
register asection *s;
|
||||
asection *s;
|
||||
const struct elf_backend_data *bed = get_elf_backend_data (abfd);
|
||||
int ptralign = 0;
|
||||
|
||||
|
@ -4043,7 +4043,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
|||
}
|
||||
else
|
||||
{
|
||||
int index;
|
||||
int target;
|
||||
|
||||
/* IE->LE transition:
|
||||
mov.l 1f,r0; stc gbr,rN; mov.l @(r0,r12),rM;
|
||||
|
@ -4065,12 +4065,12 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
|||
}
|
||||
|
||||
BFD_ASSERT ((insn & 0xff00) == 0xd000);
|
||||
index = insn & 0x00ff;
|
||||
target = insn & 0x00ff;
|
||||
insn = bfd_get_16 (input_bfd, contents + offset + 2);
|
||||
BFD_ASSERT ((insn & 0xf0ff) == 0x0012);
|
||||
insn = bfd_get_16 (input_bfd, contents + offset + 4);
|
||||
BFD_ASSERT ((insn & 0xf0ff) == 0x00ce);
|
||||
insn = 0xd000 | (insn & 0x0f00) | index;
|
||||
insn = 0xd000 | (insn & 0x0f00) | target;
|
||||
bfd_put_16 (output_bfd, insn, contents + offset + 0);
|
||||
bfd_put_16 (output_bfd, 0x0009, contents + offset + 4);
|
||||
}
|
||||
|
|
|
@ -4401,7 +4401,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
|
|||
struct call_info *call, *pasty;
|
||||
struct _spu_elf_section_data *sec_data;
|
||||
struct spu_elf_stack_info *sinfo;
|
||||
int k;
|
||||
unsigned int k;
|
||||
|
||||
/* See whether we can add this section to the current
|
||||
overlay without overflowing our overlay buffer. */
|
||||
|
@ -4421,7 +4421,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
|
|||
{
|
||||
/* Pasted sections must stay together, so add their
|
||||
sizes too. */
|
||||
struct call_info *pasty = find_pasted_call (sec);
|
||||
pasty = find_pasted_call (sec);
|
||||
while (pasty != NULL)
|
||||
{
|
||||
struct function_info *call_fun = pasty->fun;
|
||||
|
@ -4448,7 +4448,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
|
|||
pasty = NULL;
|
||||
sec_data = spu_elf_section_data (sec);
|
||||
sinfo = sec_data->u.i.stack_info;
|
||||
for (k = 0; k < sinfo->num_fun; ++k)
|
||||
for (k = 0; k < (unsigned) sinfo->num_fun; ++k)
|
||||
for (call = sinfo->fun[k].call_list; call; call = call->next)
|
||||
if (call->is_pasted)
|
||||
{
|
||||
|
@ -4478,7 +4478,6 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
|
|||
num_stubs = 0;
|
||||
for (call = dummy_caller.call_list; call; call = call->next)
|
||||
{
|
||||
unsigned int k;
|
||||
unsigned int stub_delta = 1;
|
||||
|
||||
if (htab->params->ovly_flavour == ovly_soft_icache)
|
||||
|
@ -5253,7 +5252,7 @@ spu_elf_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
|
|||
if ((*p)->p_type == PT_LOAD && (*p)->count == 1
|
||||
&& spu_elf_section_data ((*p)->sections[0])->u.o.ovl_index != 0)
|
||||
{
|
||||
struct elf_segment_map *m = *p;
|
||||
m = *p;
|
||||
*p = m->next;
|
||||
*p_overlay = m;
|
||||
p_overlay = &m->next;
|
||||
|
|
|
@ -2188,7 +2188,7 @@ v850_elf_relax_delete_bytes (bfd *abfd,
|
|||
Elf32_External_Sym *extsyms;
|
||||
Elf32_External_Sym *esym;
|
||||
Elf32_External_Sym *esymend;
|
||||
int index;
|
||||
int sym_index;
|
||||
unsigned int sec_shndx;
|
||||
bfd_byte *contents;
|
||||
Elf_Internal_Rela *irel;
|
||||
|
@ -2336,12 +2336,12 @@ v850_elf_relax_delete_bytes (bfd *abfd,
|
|||
esym = extsyms + symtab_hdr->sh_info;
|
||||
esymend = extsyms + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym));
|
||||
|
||||
for (index = 0; esym < esymend; esym ++, index ++)
|
||||
for (sym_index = 0; esym < esymend; esym ++, sym_index ++)
|
||||
{
|
||||
Elf_Internal_Sym isym;
|
||||
|
||||
bfd_elf32_swap_symbol_in (abfd, esym, shndx, & isym);
|
||||
sym_hash = elf_sym_hashes (abfd) [index];
|
||||
sym_hash = elf_sym_hashes (abfd) [sym_index];
|
||||
|
||||
if (isym.st_shndx == sec_shndx
|
||||
&& ((sym_hash)->root.type == bfd_link_hash_defined
|
||||
|
|
|
@ -1943,9 +1943,8 @@ elf_xtensa_do_reloc (reloc_howto_type *howto,
|
|||
if (!is_weak_undef)
|
||||
{
|
||||
/* Check for windowed CALL across a 1GB boundary. */
|
||||
xtensa_opcode opcode =
|
||||
get_expanded_call_opcode (contents + address,
|
||||
input_size - address, 0);
|
||||
opcode = get_expanded_call_opcode (contents + address,
|
||||
input_size - address, 0);
|
||||
if (is_windowed_call_opcode (opcode))
|
||||
{
|
||||
if ((self_address >> CALL_SEGMENT_BITS)
|
||||
|
@ -2665,7 +2664,7 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
|||
|
||||
if (r_type == R_XTENSA_ASM_SIMPLIFY)
|
||||
{
|
||||
char *error_message = NULL;
|
||||
error_message = NULL;
|
||||
/* Convert ASM_SIMPLIFY into the simpler relocation
|
||||
so that they never escape a relaxing link. */
|
||||
r = contract_asm_expansion (contents, input_size, rel,
|
||||
|
@ -3166,18 +3165,18 @@ elf_xtensa_combine_prop_entries (bfd *output_bfd,
|
|||
|
||||
for (n = 0; n < num; n++)
|
||||
{
|
||||
bfd_boolean remove = FALSE;
|
||||
bfd_boolean remove_entry = FALSE;
|
||||
|
||||
if (table[n].size == 0)
|
||||
remove = TRUE;
|
||||
else if (n > 0 &&
|
||||
(table[n-1].address + table[n-1].size == table[n].address))
|
||||
remove_entry = TRUE;
|
||||
else if (n > 0
|
||||
&& (table[n-1].address + table[n-1].size == table[n].address))
|
||||
{
|
||||
table[n-1].size += table[n].size;
|
||||
remove = TRUE;
|
||||
remove_entry = TRUE;
|
||||
}
|
||||
|
||||
if (remove)
|
||||
if (remove_entry)
|
||||
{
|
||||
for (m = n; m < num - 1; m++)
|
||||
{
|
||||
|
|
|
@ -2740,15 +2740,16 @@ elf64_hppa_elf_get_symbol_type (Elf_Internal_Sym *elf_sym,
|
|||
}
|
||||
|
||||
/* Support HP specific sections for core files. */
|
||||
|
||||
static bfd_boolean
|
||||
elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index,
|
||||
elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int sec_index,
|
||||
const char *typename)
|
||||
{
|
||||
if (hdr->p_type == PT_HP_CORE_KERNEL)
|
||||
{
|
||||
asection *sect;
|
||||
|
||||
if (!_bfd_elf_make_section_from_phdr (abfd, hdr, index, typename))
|
||||
if (!_bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename))
|
||||
return FALSE;
|
||||
|
||||
sect = bfd_make_section_anyway (abfd, ".kernel");
|
||||
|
@ -2771,7 +2772,7 @@ elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index,
|
|||
|
||||
elf_tdata (abfd)->core_signal = sig;
|
||||
|
||||
if (!_bfd_elf_make_section_from_phdr (abfd, hdr, index, typename))
|
||||
if (!_bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename))
|
||||
return FALSE;
|
||||
|
||||
/* GDB uses the ".reg" section to read register contents. */
|
||||
|
@ -2784,7 +2785,7 @@ elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index,
|
|||
|| hdr->p_type == PT_HP_CORE_MMF)
|
||||
hdr->p_type = PT_LOAD;
|
||||
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, typename);
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename);
|
||||
}
|
||||
|
||||
/* Hook called by the linker routine which adds symbols from an object
|
||||
|
@ -2800,9 +2801,9 @@ elf_hppa_add_symbol_hook (bfd *abfd,
|
|||
asection **secp,
|
||||
bfd_vma *valp)
|
||||
{
|
||||
unsigned int index = sym->st_shndx;
|
||||
unsigned int sec_index = sym->st_shndx;
|
||||
|
||||
switch (index)
|
||||
switch (sec_index)
|
||||
{
|
||||
case SHN_PARISC_ANSI_COMMON:
|
||||
*secp = bfd_make_section_old_way (abfd, ".PARISC.ansi.common");
|
||||
|
|
|
@ -5401,8 +5401,6 @@ opd_entry_value (asection *opd_sec,
|
|||
/* No relocs implies we are linking a --just-symbols object. */
|
||||
if (opd_sec->reloc_count == 0)
|
||||
{
|
||||
bfd_vma val;
|
||||
|
||||
if (!bfd_get_section_contents (opd_bfd, opd_sec, &val, offset, 8))
|
||||
return (bfd_vma) -1;
|
||||
|
||||
|
@ -8575,8 +8573,7 @@ ppc64_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
|||
for (ent = *local_plt; ent != NULL; ent = ent->next)
|
||||
if (ent->plt.refcount > 0)
|
||||
{
|
||||
asection *s = htab->iplt;
|
||||
|
||||
s = htab->iplt;
|
||||
ent->plt.offset = s->size;
|
||||
s->size += PLT_ENTRY_SIZE;
|
||||
|
||||
|
@ -11920,10 +11917,8 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
|||
? h->elf.type == STT_GNU_IFUNC
|
||||
: ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)))
|
||||
{
|
||||
Elf_Internal_Rela outrel;
|
||||
bfd_boolean skip, relocate;
|
||||
asection *sreloc;
|
||||
bfd_byte *loc;
|
||||
bfd_vma out_off;
|
||||
|
||||
/* When generating a dynamic object, these relocations
|
||||
|
@ -12384,9 +12379,6 @@ ppc64_elf_finish_dynamic_symbol (bfd *output_bfd,
|
|||
|
||||
if (h->needs_copy)
|
||||
{
|
||||
Elf_Internal_Rela rela;
|
||||
bfd_byte *loc;
|
||||
|
||||
/* This symbol needs a copy reloc. Set it up. */
|
||||
|
||||
if (h->dynindx == -1
|
||||
|
|
|
@ -1504,7 +1504,6 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||
easily. Oh well. */
|
||||
asection *s;
|
||||
void **vpp;
|
||||
Elf_Internal_Sym *isym;
|
||||
|
||||
isym = bfd_sym_from_r_symndx (&htab->sym_cache,
|
||||
abfd, r_symndx);
|
||||
|
@ -4226,11 +4225,11 @@ elf64_x86_64_add_symbol_hook (bfd *abfd,
|
|||
|
||||
static bfd_boolean
|
||||
elf64_x86_64_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
asection *sec, int *index)
|
||||
asection *sec, int *index_return)
|
||||
{
|
||||
if (sec == &_bfd_elf_large_com_section)
|
||||
{
|
||||
*index = SHN_X86_64_LCOMMON;
|
||||
*index_return = SHN_X86_64_LCOMMON;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
@ -185,7 +185,7 @@ bfd_boolean
|
|||
_bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
{
|
||||
flagword flags;
|
||||
register asection *s;
|
||||
asection *s;
|
||||
const struct elf_backend_data *bed;
|
||||
|
||||
if (! is_elf_hash_table (info->hash))
|
||||
|
@ -570,8 +570,7 @@ bfd_elf_record_link_assignment (bfd *output_bfd,
|
|||
|
||||
if (provide && hidden)
|
||||
{
|
||||
const struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
|
||||
|
||||
bed = get_elf_backend_data (output_bfd);
|
||||
h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
|
||||
(*bed->elf_backend_hide_symbol) (info, h, TRUE);
|
||||
}
|
||||
|
@ -1184,9 +1183,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
|||
was referenced before. */
|
||||
if (h->ref_regular)
|
||||
{
|
||||
const struct elf_backend_data *bed
|
||||
= get_elf_backend_data (abfd);
|
||||
struct elf_link_hash_entry *vh = *sym_hash;
|
||||
|
||||
vh->root.type = h->root.type;
|
||||
h->root.type = bfd_link_hash_indirect;
|
||||
(*bed->elf_backend_copy_indirect_symbol) (info, vh, h);
|
||||
|
@ -1548,7 +1546,6 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
|||
/* Handle the case where we had a versioned symbol in a dynamic
|
||||
library and now find a definition in a normal object. In this
|
||||
case, we make the versioned symbol point to the normal one. */
|
||||
const struct elf_backend_data *bed = get_elf_backend_data (abfd);
|
||||
flip->root.type = h->root.type;
|
||||
flip->root.u.undef.abfd = h->root.u.undef.abfd;
|
||||
h->root.type = bfd_link_hash_indirect;
|
||||
|
@ -10111,9 +10108,9 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
bfd_boolean emit_relocs;
|
||||
bfd *dynobj;
|
||||
struct elf_final_link_info finfo;
|
||||
register asection *o;
|
||||
register struct bfd_link_order *p;
|
||||
register bfd *sub;
|
||||
asection *o;
|
||||
struct bfd_link_order *p;
|
||||
bfd *sub;
|
||||
bfd_size_type max_contents_size;
|
||||
bfd_size_type max_external_reloc_size;
|
||||
bfd_size_type max_internal_reloc_count;
|
||||
|
@ -10562,9 +10559,10 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
if (size == 0
|
||||
&& (sec->flags & SEC_HAS_CONTENTS) == 0)
|
||||
{
|
||||
struct bfd_link_order *o = sec->map_tail.link_order;
|
||||
if (o != NULL)
|
||||
size = o->offset + o->size;
|
||||
struct bfd_link_order *ord = sec->map_tail.link_order;
|
||||
|
||||
if (ord != NULL)
|
||||
size = ord->offset + ord->size;
|
||||
}
|
||||
end = sec->vma + size;
|
||||
}
|
||||
|
|
|
@ -1447,7 +1447,7 @@ static bfd_boolean
|
|||
elfNN_ia64_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr,
|
||||
asection *sec)
|
||||
{
|
||||
register const char *name;
|
||||
const char *name;
|
||||
|
||||
name = bfd_get_section_name (abfd, sec);
|
||||
|
||||
|
@ -2135,7 +2135,7 @@ sort_dyn_sym_info (struct elfNN_ia64_dyn_sym_info *info,
|
|||
unsigned int count)
|
||||
{
|
||||
bfd_vma curr, prev, got_offset;
|
||||
unsigned int i, kept, dup, diff, dest, src, len;
|
||||
unsigned int i, kept, dupes, diff, dest, src, len;
|
||||
|
||||
qsort (info, count, sizeof (*info), addend_compare);
|
||||
|
||||
|
@ -2200,35 +2200,35 @@ sort_dyn_sym_info (struct elfNN_ia64_dyn_sym_info *info,
|
|||
/* Find the next duplicate. SRC will be kept. */
|
||||
prev = info [src].addend;
|
||||
got_offset = info [src].got_offset;
|
||||
for (dup = src + 1; dup < count; dup++)
|
||||
for (dupes = src + 1; dupes < count; dupes ++)
|
||||
{
|
||||
curr = info [dup].addend;
|
||||
curr = info [dupes].addend;
|
||||
if (curr == prev)
|
||||
{
|
||||
/* Make sure that got_offset is valid. */
|
||||
if (got_offset == (bfd_vma) -1)
|
||||
got_offset = info [dup].got_offset;
|
||||
got_offset = info [dupes].got_offset;
|
||||
|
||||
/* For duplicates, make sure that the kept one has
|
||||
a valid got_offset. */
|
||||
if (got_offset != (bfd_vma) -1)
|
||||
info [dup - 1].got_offset = got_offset;
|
||||
info [dupes - 1].got_offset = got_offset;
|
||||
break;
|
||||
}
|
||||
got_offset = info [dup].got_offset;
|
||||
got_offset = info [dupes].got_offset;
|
||||
prev = curr;
|
||||
}
|
||||
|
||||
/* How much to move. */
|
||||
len = dup - src;
|
||||
i = dup + 1;
|
||||
len = dupes - src;
|
||||
i = dupes + 1;
|
||||
|
||||
if (len == 1 && dup < count)
|
||||
if (len == 1 && dupes < count)
|
||||
{
|
||||
/* If we only move 1 element, we combine it with the next
|
||||
one. There must be at least a duplicate. Find the
|
||||
next different one. */
|
||||
for (diff = dup + 1, src++; diff < count; diff++, src++)
|
||||
for (diff = dupes + 1, src++; diff < count; diff++, src++)
|
||||
{
|
||||
if (info [diff].addend != curr)
|
||||
break;
|
||||
|
@ -2249,18 +2249,18 @@ sort_dyn_sym_info (struct elfNN_ia64_dyn_sym_info *info,
|
|||
offset. */
|
||||
prev = info [diff].addend;
|
||||
got_offset = info [diff].got_offset;
|
||||
for (dup = diff + 1; dup < count; dup++)
|
||||
for (dupes = diff + 1; dupes < count; dupes ++)
|
||||
{
|
||||
curr = info [dup].addend;
|
||||
curr = info [dupes].addend;
|
||||
if (curr == prev)
|
||||
{
|
||||
/* For duplicates, make sure that GOT_OFFSET
|
||||
is valid. */
|
||||
if (got_offset == (bfd_vma) -1)
|
||||
got_offset = info [dup].got_offset;
|
||||
got_offset = info [dupes].got_offset;
|
||||
break;
|
||||
}
|
||||
got_offset = info [dup].got_offset;
|
||||
got_offset = info [dupes].got_offset;
|
||||
prev = curr;
|
||||
diff++;
|
||||
}
|
||||
|
@ -5241,18 +5241,18 @@ elfNN_ia64_finish_dynamic_symbol (bfd *output_bfd,
|
|||
Elf_Internal_Rela outrel;
|
||||
bfd_byte *loc;
|
||||
asection *plt_sec;
|
||||
bfd_vma plt_addr, pltoff_addr, gp_val, index;
|
||||
bfd_vma plt_addr, pltoff_addr, gp_val, plt_index;
|
||||
|
||||
gp_val = _bfd_get_gp_value (output_bfd);
|
||||
|
||||
/* Initialize the minimal PLT entry. */
|
||||
|
||||
index = (dyn_i->plt_offset - PLT_HEADER_SIZE) / PLT_MIN_ENTRY_SIZE;
|
||||
plt_index = (dyn_i->plt_offset - PLT_HEADER_SIZE) / PLT_MIN_ENTRY_SIZE;
|
||||
plt_sec = ia64_info->root.splt;
|
||||
loc = plt_sec->contents + dyn_i->plt_offset;
|
||||
|
||||
memcpy (loc, plt_min_entry, PLT_MIN_ENTRY_SIZE);
|
||||
elfNN_ia64_install_value (loc, index, R_IA64_IMM22);
|
||||
elfNN_ia64_install_value (loc, plt_index, R_IA64_IMM22);
|
||||
elfNN_ia64_install_value (loc+2, -dyn_i->plt_offset, R_IA64_PCREL21B);
|
||||
|
||||
plt_addr = (plt_sec->output_section->vma
|
||||
|
@ -5297,7 +5297,7 @@ elfNN_ia64_finish_dynamic_symbol (bfd *output_bfd,
|
|||
PLT relocations. */
|
||||
|
||||
loc = ia64_info->rel_pltoff_sec->contents;
|
||||
loc += ((ia64_info->rel_pltoff_sec->reloc_count + index)
|
||||
loc += ((ia64_info->rel_pltoff_sec->reloc_count + plt_index)
|
||||
* sizeof (ElfNN_External_Rela));
|
||||
bfd_elfNN_swap_reloca_out (output_bfd, &outrel, loc);
|
||||
}
|
||||
|
|
|
@ -177,7 +177,8 @@ struct mips_got_info
|
|||
|
||||
/* Map an input bfd to a got in a multi-got link. */
|
||||
|
||||
struct mips_elf_bfd2got_hash {
|
||||
struct mips_elf_bfd2got_hash
|
||||
{
|
||||
bfd *bfd;
|
||||
struct mips_got_info *g;
|
||||
};
|
||||
|
@ -3064,7 +3065,7 @@ mips_elf_global_got_index (bfd *abfd, bfd *ibfd, struct elf_link_hash_entry *h,
|
|||
int r_type, struct bfd_link_info *info)
|
||||
{
|
||||
struct mips_elf_link_hash_table *htab;
|
||||
bfd_vma index;
|
||||
bfd_vma got_index;
|
||||
struct mips_got_info *g, *gg;
|
||||
long global_got_dynindx = 0;
|
||||
|
||||
|
@ -3122,8 +3123,8 @@ mips_elf_global_got_index (bfd *abfd, bfd *ibfd, struct elf_link_hash_entry *h,
|
|||
+ h->root.u.def.section->output_offset
|
||||
+ h->root.u.def.section->output_section->vma);
|
||||
|
||||
index = mips_tls_got_index (abfd, hm->tls_got_offset, &hm->tls_type,
|
||||
r_type, info, hm, value);
|
||||
got_index = mips_tls_got_index (abfd, hm->tls_got_offset, &hm->tls_type,
|
||||
r_type, info, hm, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3132,12 +3133,12 @@ mips_elf_global_got_index (bfd *abfd, bfd *ibfd, struct elf_link_hash_entry *h,
|
|||
indices into the GOT. That makes it easy to calculate the GOT
|
||||
offset. */
|
||||
BFD_ASSERT (h->dynindx >= global_got_dynindx);
|
||||
index = ((h->dynindx - global_got_dynindx + g->local_gotno)
|
||||
* MIPS_ELF_GOT_SIZE (abfd));
|
||||
got_index = ((h->dynindx - global_got_dynindx + g->local_gotno)
|
||||
* MIPS_ELF_GOT_SIZE (abfd));
|
||||
}
|
||||
BFD_ASSERT (index < htab->sgot->size);
|
||||
BFD_ASSERT (got_index < htab->sgot->size);
|
||||
|
||||
return index;
|
||||
return got_index;
|
||||
}
|
||||
|
||||
/* Find a GOT page entry that points to within 32KB of VALUE. These
|
||||
|
@ -3150,7 +3151,7 @@ static bfd_vma
|
|||
mips_elf_got_page (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
|
||||
bfd_vma value, bfd_vma *offsetp)
|
||||
{
|
||||
bfd_vma page, index;
|
||||
bfd_vma page, got_index;
|
||||
struct mips_got_entry *entry;
|
||||
|
||||
page = (value + 0x8000) & ~(bfd_vma) 0xffff;
|
||||
|
@ -3160,12 +3161,12 @@ mips_elf_got_page (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
|
|||
if (!entry)
|
||||
return MINUS_ONE;
|
||||
|
||||
index = entry->gotidx;
|
||||
got_index = entry->gotidx;
|
||||
|
||||
if (offsetp)
|
||||
*offsetp = value - entry->d.address;
|
||||
|
||||
return index;
|
||||
return got_index;
|
||||
}
|
||||
|
||||
/* Find a local GOT entry for an R_MIPS*_GOT16 relocation against VALUE.
|
||||
|
@ -3201,7 +3202,7 @@ mips_elf_got16_entry (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
|
|||
|
||||
static bfd_vma
|
||||
mips_elf_got_offset_from_index (struct bfd_link_info *info, bfd *output_bfd,
|
||||
bfd *input_bfd, bfd_vma index)
|
||||
bfd *input_bfd, bfd_vma got_index)
|
||||
{
|
||||
struct mips_elf_link_hash_table *htab;
|
||||
asection *sgot;
|
||||
|
@ -3212,7 +3213,7 @@ mips_elf_got_offset_from_index (struct bfd_link_info *info, bfd *output_bfd,
|
|||
gp = _bfd_get_gp_value (output_bfd)
|
||||
+ mips_elf_adjust_gp (output_bfd, htab->got_info, input_bfd);
|
||||
|
||||
return sgot->output_section->vma + sgot->output_offset + index - gp;
|
||||
return sgot->output_section->vma + sgot->output_offset + got_index - gp;
|
||||
}
|
||||
|
||||
/* Create and return a local GOT entry for VALUE, which was calculated
|
||||
|
@ -3309,7 +3310,7 @@ mips_elf_create_local_got_entry (bfd *abfd, struct bfd_link_info *info,
|
|||
{
|
||||
Elf_Internal_Rela outrel;
|
||||
asection *s;
|
||||
bfd_byte *loc;
|
||||
bfd_byte *rloc;
|
||||
bfd_vma got_address;
|
||||
|
||||
s = mips_elf_rel_dyn_section (info, FALSE);
|
||||
|
@ -3317,11 +3318,11 @@ mips_elf_create_local_got_entry (bfd *abfd, struct bfd_link_info *info,
|
|||
+ htab->sgot->output_offset
|
||||
+ entry.gotidx);
|
||||
|
||||
loc = s->contents + (s->reloc_count++ * sizeof (Elf32_External_Rela));
|
||||
rloc = s->contents + (s->reloc_count++ * sizeof (Elf32_External_Rela));
|
||||
outrel.r_offset = got_address;
|
||||
outrel.r_info = ELF32_R_INFO (STN_UNDEF, R_MIPS_32);
|
||||
outrel.r_addend = value;
|
||||
bfd_elf32_swap_reloca_out (abfd, &outrel, loc);
|
||||
bfd_elf32_swap_reloca_out (abfd, &outrel, rloc);
|
||||
}
|
||||
|
||||
return *loc;
|
||||
|
@ -8975,8 +8976,6 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
|||
if (!mips_elf_add_lo16_rel_addend (input_bfd, rel, relend,
|
||||
contents, &addend))
|
||||
{
|
||||
const char *name;
|
||||
|
||||
if (h)
|
||||
name = h->root.root.string;
|
||||
else
|
||||
|
@ -9122,9 +9121,8 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
|||
&& (howto->type == R_MIPS_GPREL16
|
||||
|| howto->type == R_MIPS_LITERAL))
|
||||
{
|
||||
const char *msg =
|
||||
_("small-data section exceeds 64KB;"
|
||||
" lower small-data size limit (see option -G)");
|
||||
msg = _("small-data section exceeds 64KB;"
|
||||
" lower small-data size limit (see option -G)");
|
||||
|
||||
htab->small_data_overflow_reported = TRUE;
|
||||
(*info->callbacks->einfo) ("%P: %s\n", msg);
|
||||
|
@ -10226,22 +10224,22 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
|
|||
|
||||
for (g = gg->next; g->next != gg; g = g->next)
|
||||
{
|
||||
bfd_vma index = g->next->local_gotno + g->next->global_gotno
|
||||
bfd_vma got_index = g->next->local_gotno + g->next->global_gotno
|
||||
+ g->next->tls_gotno;
|
||||
|
||||
MIPS_ELF_PUT_WORD (output_bfd, 0, sgot->contents
|
||||
+ index++ * MIPS_ELF_GOT_SIZE (output_bfd));
|
||||
+ got_index++ * MIPS_ELF_GOT_SIZE (output_bfd));
|
||||
MIPS_ELF_PUT_WORD (output_bfd, MIPS_ELF_GNU_GOT1_MASK (output_bfd),
|
||||
sgot->contents
|
||||
+ index++ * MIPS_ELF_GOT_SIZE (output_bfd));
|
||||
+ got_index++ * MIPS_ELF_GOT_SIZE (output_bfd));
|
||||
|
||||
if (! info->shared)
|
||||
continue;
|
||||
|
||||
while (index < g->assigned_gotno)
|
||||
while (got_index < g->assigned_gotno)
|
||||
{
|
||||
rel[0].r_offset = rel[1].r_offset = rel[2].r_offset
|
||||
= index++ * MIPS_ELF_GOT_SIZE (output_bfd);
|
||||
= got_index++ * MIPS_ELF_GOT_SIZE (output_bfd);
|
||||
if (!(mips_elf_create_dynamic_relocation
|
||||
(output_bfd, info, rel, NULL,
|
||||
bfd_abs_section_ptr,
|
||||
|
|
|
@ -533,15 +533,15 @@ _bfd_sparc_elf_mkobject (bfd *abfd)
|
|||
}
|
||||
|
||||
static void
|
||||
sparc_put_word_32 (bfd *bfd, bfd_vma val, void *ptr)
|
||||
sparc_put_word_32 (bfd *abfd, bfd_vma val, void *ptr)
|
||||
{
|
||||
bfd_put_32 (bfd, val, ptr);
|
||||
bfd_put_32 (abfd, val, ptr);
|
||||
}
|
||||
|
||||
static void
|
||||
sparc_put_word_64 (bfd *bfd, bfd_vma val, void *ptr)
|
||||
sparc_put_word_64 (bfd *abfd, bfd_vma val, void *ptr)
|
||||
{
|
||||
bfd_put_64 (bfd, val, ptr);
|
||||
bfd_put_64 (abfd, val, ptr);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -557,10 +557,10 @@ sparc_elf_append_rela (bfd *abfd, asection *s, Elf_Internal_Rela *rel)
|
|||
|
||||
static bfd_vma
|
||||
sparc_elf_r_info_64 (Elf_Internal_Rela *in_rel ATTRIBUTE_UNUSED,
|
||||
bfd_vma index ATTRIBUTE_UNUSED,
|
||||
bfd_vma rel_index ATTRIBUTE_UNUSED,
|
||||
bfd_vma type ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return ELF64_R_INFO (index,
|
||||
return ELF64_R_INFO (rel_index,
|
||||
(in_rel ?
|
||||
ELF64_R_TYPE_INFO (ELF64_R_TYPE_DATA (in_rel->r_info),
|
||||
type) : type));
|
||||
|
@ -568,9 +568,9 @@ sparc_elf_r_info_64 (Elf_Internal_Rela *in_rel ATTRIBUTE_UNUSED,
|
|||
|
||||
static bfd_vma
|
||||
sparc_elf_r_info_32 (Elf_Internal_Rela *in_rel ATTRIBUTE_UNUSED,
|
||||
bfd_vma index, bfd_vma type)
|
||||
bfd_vma rel_index, bfd_vma type)
|
||||
{
|
||||
return ELF32_R_INFO (index, type);
|
||||
return ELF32_R_INFO (rel_index, type);
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
|
@ -634,7 +634,7 @@ sparc64_plt_entry_build (bfd *output_bfd, asection *splt, bfd_vma offset,
|
|||
{
|
||||
unsigned char *entry = splt->contents + offset;
|
||||
const unsigned int nop = SPARC_NOP;
|
||||
int index;
|
||||
int plt_index;
|
||||
|
||||
if (offset < (PLT64_LARGE_THRESHOLD * PLT64_ENTRY_SIZE))
|
||||
{
|
||||
|
@ -642,9 +642,9 @@ sparc64_plt_entry_build (bfd *output_bfd, asection *splt, bfd_vma offset,
|
|||
|
||||
*r_offset = offset;
|
||||
|
||||
index = (offset / PLT64_ENTRY_SIZE);
|
||||
plt_index = (offset / PLT64_ENTRY_SIZE);
|
||||
|
||||
sethi = 0x03000000 | (index * PLT64_ENTRY_SIZE);
|
||||
sethi = 0x03000000 | (plt_index * PLT64_ENTRY_SIZE);
|
||||
ba = 0x30680000
|
||||
| (((splt->contents + PLT64_ENTRY_SIZE) - (entry + 4)) / 4 & 0x7ffff);
|
||||
|
||||
|
@ -691,7 +691,7 @@ sparc64_plt_entry_build (bfd *output_bfd, asection *splt, bfd_vma offset,
|
|||
|
||||
ofs = offset % block_size;
|
||||
|
||||
index = (PLT64_LARGE_THRESHOLD +
|
||||
plt_index = (PLT64_LARGE_THRESHOLD +
|
||||
(block * 160) +
|
||||
(ofs / insn_chunk_size));
|
||||
|
||||
|
@ -721,7 +721,7 @@ sparc64_plt_entry_build (bfd *output_bfd, asection *splt, bfd_vma offset,
|
|||
bfd_put_64 (output_bfd, (bfd_vma) (splt->contents - (entry + 4)), ptr);
|
||||
}
|
||||
|
||||
return index - 4;
|
||||
return plt_index - 4;
|
||||
}
|
||||
|
||||
/* The format of the first PLT entry in a VxWorks executable. */
|
||||
|
|
34
bfd/hash.c
34
bfd/hash.c
|
@ -425,7 +425,7 @@ bfd_hash_lookup (struct bfd_hash_table *table,
|
|||
unsigned int c;
|
||||
struct bfd_hash_entry *hashp;
|
||||
unsigned int len;
|
||||
unsigned int index;
|
||||
unsigned int _index;
|
||||
|
||||
hash = 0;
|
||||
len = 0;
|
||||
|
@ -439,8 +439,8 @@ bfd_hash_lookup (struct bfd_hash_table *table,
|
|||
hash += len + (len << 17);
|
||||
hash ^= hash >> 2;
|
||||
|
||||
index = hash % table->size;
|
||||
for (hashp = table->table[index];
|
||||
_index = hash % table->size;
|
||||
for (hashp = table->table[_index];
|
||||
hashp != NULL;
|
||||
hashp = hashp->next)
|
||||
{
|
||||
|
@ -478,16 +478,16 @@ bfd_hash_insert (struct bfd_hash_table *table,
|
|||
unsigned long hash)
|
||||
{
|
||||
struct bfd_hash_entry *hashp;
|
||||
unsigned int index;
|
||||
unsigned int _index;
|
||||
|
||||
hashp = (*table->newfunc) (NULL, table, string);
|
||||
if (hashp == NULL)
|
||||
return NULL;
|
||||
hashp->string = string;
|
||||
hashp->hash = hash;
|
||||
index = hash % table->size;
|
||||
hashp->next = table->table[index];
|
||||
table->table[index] = hashp;
|
||||
_index = hash % table->size;
|
||||
hashp->next = table->table[_index];
|
||||
table->table[_index] = hashp;
|
||||
table->count++;
|
||||
|
||||
if (!table->frozen && table->count > table->size * 3 / 4)
|
||||
|
@ -524,9 +524,9 @@ bfd_hash_insert (struct bfd_hash_table *table,
|
|||
chain_end = chain_end->next;
|
||||
|
||||
table->table[hi] = chain_end->next;
|
||||
index = chain->hash % newsize;
|
||||
chain_end->next = newtable[index];
|
||||
newtable[index] = chain;
|
||||
_index = chain->hash % newsize;
|
||||
chain_end->next = newtable[_index];
|
||||
newtable[_index] = chain;
|
||||
}
|
||||
table->table = newtable;
|
||||
table->size = newsize;
|
||||
|
@ -542,11 +542,11 @@ bfd_hash_replace (struct bfd_hash_table *table,
|
|||
struct bfd_hash_entry *old,
|
||||
struct bfd_hash_entry *nw)
|
||||
{
|
||||
unsigned int index;
|
||||
unsigned int _index;
|
||||
struct bfd_hash_entry **pph;
|
||||
|
||||
index = old->hash % table->size;
|
||||
for (pph = &table->table[index];
|
||||
_index = old->hash % table->size;
|
||||
for (pph = &table->table[_index];
|
||||
(*pph) != NULL;
|
||||
pph = &(*pph)->next)
|
||||
{
|
||||
|
@ -617,14 +617,14 @@ bfd_hash_set_default_size (bfd_size_type hash_size)
|
|||
{
|
||||
251, 509, 1021, 2039, 4051, 8599, 16699, 32749
|
||||
};
|
||||
size_t index;
|
||||
size_t _index;
|
||||
|
||||
/* Work out best prime number near the hash_size. */
|
||||
for (index = 0; index < ARRAY_SIZE (hash_size_primes) - 1; ++index)
|
||||
if (hash_size <= hash_size_primes[index])
|
||||
for (_index = 0; _index < ARRAY_SIZE (hash_size_primes) - 1; ++_index)
|
||||
if (hash_size <= hash_size_primes[_index])
|
||||
break;
|
||||
|
||||
bfd_default_hash_table_size = hash_size_primes[index];
|
||||
bfd_default_hash_table_size = hash_size_primes[_index];
|
||||
}
|
||||
|
||||
/* A few different object file formats (a.out, COFF, ELF) use a string
|
||||
|
|
22
bfd/ieee.c
22
bfd/ieee.c
|
@ -228,7 +228,7 @@ ieee_write_expression (bfd *abfd,
|
|||
bfd_vma value,
|
||||
asymbol *symbol,
|
||||
bfd_boolean pcrel,
|
||||
unsigned int index)
|
||||
unsigned int sindex)
|
||||
{
|
||||
unsigned int term_count = 0;
|
||||
|
||||
|
@ -297,7 +297,7 @@ ieee_write_expression (bfd *abfd,
|
|||
/* Subtract the pc from here by asking for PC of this section. */
|
||||
if (! ieee_write_byte (abfd, ieee_variable_P_enum)
|
||||
|| ! ieee_write_byte (abfd,
|
||||
(bfd_byte) (index + IEEE_SECTION_NUMBER_BASE))
|
||||
(bfd_byte) (sindex + IEEE_SECTION_NUMBER_BASE))
|
||||
|| ! ieee_write_byte (abfd, ieee_function_minus_enum))
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -1045,9 +1045,9 @@ ieee_canonicalize_symtab (bfd *abfd, asymbol **location)
|
|||
}
|
||||
|
||||
static asection *
|
||||
get_section_entry (bfd *abfd, ieee_data_type *ieee, unsigned int index)
|
||||
get_section_entry (bfd *abfd, ieee_data_type *ieee, unsigned int sindex)
|
||||
{
|
||||
if (index >= ieee->section_table_size)
|
||||
if (sindex >= ieee->section_table_size)
|
||||
{
|
||||
unsigned int c, i;
|
||||
asection **n;
|
||||
|
@ -1056,7 +1056,7 @@ get_section_entry (bfd *abfd, ieee_data_type *ieee, unsigned int index)
|
|||
c = ieee->section_table_size;
|
||||
if (c == 0)
|
||||
c = 20;
|
||||
while (c <= index)
|
||||
while (c <= sindex)
|
||||
c *= 2;
|
||||
|
||||
amt = c;
|
||||
|
@ -1072,20 +1072,20 @@ get_section_entry (bfd *abfd, ieee_data_type *ieee, unsigned int index)
|
|||
ieee->section_table_size = c;
|
||||
}
|
||||
|
||||
if (ieee->section_table[index] == (asection *) NULL)
|
||||
if (ieee->section_table[sindex] == (asection *) NULL)
|
||||
{
|
||||
char *tmp = bfd_alloc (abfd, (bfd_size_type) 11);
|
||||
asection *section;
|
||||
|
||||
if (!tmp)
|
||||
return NULL;
|
||||
sprintf (tmp, " fsec%4d", index);
|
||||
sprintf (tmp, " fsec%4d", sindex);
|
||||
section = bfd_make_section (abfd, tmp);
|
||||
ieee->section_table[index] = section;
|
||||
section->target_index = index;
|
||||
ieee->section_table[index] = section;
|
||||
ieee->section_table[sindex] = section;
|
||||
section->target_index = sindex;
|
||||
ieee->section_table[sindex] = section;
|
||||
}
|
||||
return ieee->section_table[index];
|
||||
return ieee->section_table[sindex];
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
10
bfd/libbfd.c
10
bfd/libbfd.c
|
@ -1,6 +1,6 @@
|
|||
/* Assorted BFD support routines, only used internally.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
|
@ -804,9 +804,9 @@ bfd_put_bits (bfd_uint64_t data, void *p, int bits, bfd_boolean big_p)
|
|||
bytes = bits / 8;
|
||||
for (i = 0; i < bytes; i++)
|
||||
{
|
||||
int index = big_p ? bytes - i - 1 : i;
|
||||
int addr_index = big_p ? bytes - i - 1 : i;
|
||||
|
||||
addr[index] = data & 0xff;
|
||||
addr[addr_index] = data & 0xff;
|
||||
data >>= 8;
|
||||
}
|
||||
}
|
||||
|
@ -826,9 +826,9 @@ bfd_get_bits (const void *p, int bits, bfd_boolean big_p)
|
|||
bytes = bits / 8;
|
||||
for (i = 0; i < bytes; i++)
|
||||
{
|
||||
int index = big_p ? i : bytes - i - 1;
|
||||
int addr_index = big_p ? i : bytes - i - 1;
|
||||
|
||||
data = (data << 8) | addr[index];
|
||||
data = (data << 8) | addr[addr_index];
|
||||
}
|
||||
|
||||
return data;
|
||||
|
|
110
bfd/mach-o.c
110
bfd/mach-o.c
|
@ -428,8 +428,7 @@ bfd_mach_o_get_synthetic_symtab (bfd *abfd,
|
|||
for (i = 0; i < mdata->nsects; i++)
|
||||
{
|
||||
bfd_mach_o_section *sec = mdata->sections[i];
|
||||
unsigned int j, first, last;
|
||||
bfd_mach_o_symtab_command *symtab = mdata->symtab;
|
||||
unsigned int first, last;
|
||||
bfd_vma addr;
|
||||
bfd_vma entry_size;
|
||||
|
||||
|
@ -490,7 +489,7 @@ bfd_mach_o_get_symbol_info (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
|
||||
void
|
||||
bfd_mach_o_print_symbol (bfd *abfd,
|
||||
PTR afile,
|
||||
void * afile,
|
||||
asymbol *symbol,
|
||||
bfd_print_symbol_type how)
|
||||
{
|
||||
|
@ -504,7 +503,7 @@ bfd_mach_o_print_symbol (bfd *abfd,
|
|||
fprintf (file, "%s", symbol->name);
|
||||
break;
|
||||
default:
|
||||
bfd_print_symbol_vandf (abfd, (PTR) file, symbol);
|
||||
bfd_print_symbol_vandf (abfd, (void *) file, symbol);
|
||||
if (asym->n_type & BFD_MACH_O_N_STAB)
|
||||
name = bfd_get_stab_name (asym->n_type);
|
||||
else
|
||||
|
@ -606,7 +605,7 @@ bfd_mach_o_write_header (bfd *abfd, bfd_mach_o_header *header)
|
|||
bfd_h_put_32 (abfd, header->reserved, buf + 28);
|
||||
|
||||
if (bfd_seek (abfd, 0, SEEK_SET) != 0
|
||||
|| bfd_bwrite ((PTR) buf, size, abfd) != size)
|
||||
|| bfd_bwrite ((void *) buf, size, abfd) != size)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@ -635,7 +634,7 @@ bfd_mach_o_write_thread (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
bfd_h_put_32 (abfd, (cmd->flavours[i].size / 4), buf + 4);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0
|
||||
|| bfd_bwrite ((PTR) buf, 8, abfd) != 8)
|
||||
|| bfd_bwrite ((void *) buf, 8, abfd) != 8)
|
||||
return -1;
|
||||
|
||||
offset += cmd->flavours[i].size + 8;
|
||||
|
@ -900,7 +899,7 @@ bfd_mach_o_write_relocs (bfd *abfd, bfd_mach_o_section *section)
|
|||
bfd_put_32 (abfd, v, buf + 4);
|
||||
}
|
||||
|
||||
if (bfd_bwrite ((PTR) buf, BFD_MACH_O_RELENT_SIZE, abfd)
|
||||
if (bfd_bwrite ((void *) buf, BFD_MACH_O_RELENT_SIZE, abfd)
|
||||
!= BFD_MACH_O_RELENT_SIZE)
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -924,7 +923,7 @@ bfd_mach_o_write_section_32 (bfd *abfd, bfd_mach_o_section *section)
|
|||
bfd_h_put_32 (abfd, section->reserved1, buf + 60);
|
||||
bfd_h_put_32 (abfd, section->reserved2, buf + 64);
|
||||
|
||||
if (bfd_bwrite ((PTR) buf, BFD_MACH_O_SECTION_SIZE, abfd)
|
||||
if (bfd_bwrite ((void *) buf, BFD_MACH_O_SECTION_SIZE, abfd)
|
||||
!= BFD_MACH_O_SECTION_SIZE)
|
||||
return -1;
|
||||
|
||||
|
@ -949,7 +948,7 @@ bfd_mach_o_write_section_64 (bfd *abfd, bfd_mach_o_section *section)
|
|||
bfd_h_put_32 (abfd, section->reserved2, buf + 72);
|
||||
bfd_h_put_32 (abfd, section->reserved3, buf + 76);
|
||||
|
||||
if (bfd_bwrite ((PTR) buf, BFD_MACH_O_SECTION_64_SIZE, abfd)
|
||||
if (bfd_bwrite ((void *) buf, BFD_MACH_O_SECTION_64_SIZE, abfd)
|
||||
!= BFD_MACH_O_SECTION_64_SIZE)
|
||||
return -1;
|
||||
|
||||
|
@ -980,7 +979,7 @@ bfd_mach_o_write_segment_32 (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
bfd_h_put_32 (abfd, seg->flags, buf + 44);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| (bfd_bwrite ((PTR) buf, BFD_MACH_O_LC_SEGMENT_SIZE - 8, abfd)
|
||||
|| (bfd_bwrite ((void *) buf, BFD_MACH_O_LC_SEGMENT_SIZE - 8, abfd)
|
||||
!= BFD_MACH_O_LC_SEGMENT_SIZE - 8))
|
||||
return -1;
|
||||
|
||||
|
@ -1015,7 +1014,7 @@ bfd_mach_o_write_segment_64 (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
bfd_h_put_32 (abfd, seg->flags, buf + 60);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| (bfd_bwrite ((PTR) buf, BFD_MACH_O_LC_SEGMENT_64_SIZE - 8, abfd)
|
||||
|| (bfd_bwrite ((void *) buf, BFD_MACH_O_LC_SEGMENT_64_SIZE - 8, abfd)
|
||||
!= BFD_MACH_O_LC_SEGMENT_64_SIZE - 8))
|
||||
return -1;
|
||||
|
||||
|
@ -1055,21 +1054,20 @@ bfd_mach_o_write_symtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
|
||||
for (i = 0; i < sym->nsyms; i++)
|
||||
{
|
||||
unsigned char buf[16];
|
||||
bfd_size_type index;
|
||||
bfd_size_type str_index;
|
||||
bfd_mach_o_asymbol *s = (bfd_mach_o_asymbol *)symbols[i];
|
||||
|
||||
/* Compute name index. */
|
||||
/* An index of 0 always means the empty string. */
|
||||
if (s->symbol.name == 0 || s->symbol.name[0] == '\0')
|
||||
index = 0;
|
||||
str_index = 0;
|
||||
else
|
||||
{
|
||||
index = _bfd_stringtab_add (strtab, s->symbol.name, TRUE, FALSE);
|
||||
if (index == (bfd_size_type) -1)
|
||||
str_index = _bfd_stringtab_add (strtab, s->symbol.name, TRUE, FALSE);
|
||||
if (str_index == (bfd_size_type) -1)
|
||||
goto err;
|
||||
}
|
||||
bfd_h_put_32 (abfd, index, buf);
|
||||
bfd_h_put_32 (abfd, str_index, buf);
|
||||
bfd_h_put_8 (abfd, s->n_type, buf + 4);
|
||||
bfd_h_put_8 (abfd, s->n_sect, buf + 5);
|
||||
bfd_h_put_16 (abfd, s->n_desc, buf + 6);
|
||||
|
@ -1078,7 +1076,7 @@ bfd_mach_o_write_symtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
else
|
||||
bfd_h_put_32 (abfd, s->symbol.section->vma + s->symbol.value, buf + 8);
|
||||
|
||||
if (bfd_bwrite ((PTR) buf, symlen, abfd) != symlen)
|
||||
if (bfd_bwrite ((void *) buf, symlen, abfd) != symlen)
|
||||
goto err;
|
||||
}
|
||||
sym->strsize = _bfd_stringtab_size (strtab);
|
||||
|
@ -1096,7 +1094,7 @@ bfd_mach_o_write_symtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
bfd_h_put_32 (abfd, sym->strsize, buf + 12);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bwrite ((PTR) buf, 16, abfd) != 16)
|
||||
|| bfd_bwrite ((void *) buf, 16, abfd) != 16)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@ -1192,7 +1190,7 @@ bfd_mach_o_write_contents (bfd *abfd)
|
|||
bfd_h_put_32 (abfd, cur->len, buf + 4);
|
||||
|
||||
if (bfd_seek (abfd, cur->offset, SEEK_SET) != 0
|
||||
|| bfd_bwrite ((PTR) buf, 8, abfd) != 8)
|
||||
|| bfd_bwrite ((void *) buf, 8, abfd) != 8)
|
||||
return FALSE;
|
||||
|
||||
switch (cur->type)
|
||||
|
@ -1410,7 +1408,7 @@ bfd_mach_o_read_header (bfd *abfd, bfd_mach_o_header *header)
|
|||
|
||||
/* Just read the magic number. */
|
||||
if (bfd_seek (abfd, 0, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 4, abfd) != 4)
|
||||
|| bfd_bread ((void *) buf, 4, abfd) != 4)
|
||||
return FALSE;
|
||||
|
||||
if (bfd_getb32 (buf) == BFD_MACH_O_MH_MAGIC)
|
||||
|
@ -1452,7 +1450,7 @@ bfd_mach_o_read_header (bfd *abfd, bfd_mach_o_header *header)
|
|||
BFD_MACH_O_HEADER_64_SIZE : BFD_MACH_O_HEADER_SIZE;
|
||||
|
||||
if (bfd_seek (abfd, 0, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, size, abfd) != size)
|
||||
|| bfd_bread ((void *) buf, size, abfd) != size)
|
||||
return FALSE;
|
||||
|
||||
header->cputype = (*get32) (buf + 4);
|
||||
|
@ -1530,7 +1528,7 @@ bfd_mach_o_read_section_32 (bfd *abfd,
|
|||
unsigned char buf[BFD_MACH_O_SECTION_SIZE];
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) != 0
|
||||
|| (bfd_bread ((PTR) buf, BFD_MACH_O_SECTION_SIZE, abfd)
|
||||
|| (bfd_bread ((void *) buf, BFD_MACH_O_SECTION_SIZE, abfd)
|
||||
!= BFD_MACH_O_SECTION_SIZE))
|
||||
return -1;
|
||||
|
||||
|
@ -1565,7 +1563,7 @@ bfd_mach_o_read_section_64 (bfd *abfd,
|
|||
unsigned char buf[BFD_MACH_O_SECTION_64_SIZE];
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) != 0
|
||||
|| (bfd_bread ((PTR) buf, BFD_MACH_O_SECTION_64_SIZE, abfd)
|
||||
|| (bfd_bread ((void *) buf, BFD_MACH_O_SECTION_64_SIZE, abfd)
|
||||
!= BFD_MACH_O_SECTION_64_SIZE))
|
||||
return -1;
|
||||
|
||||
|
@ -1626,7 +1624,7 @@ bfd_mach_o_read_symtab_symbol (bfd *abfd,
|
|||
BFD_ASSERT (sym->strtab != NULL);
|
||||
|
||||
if (bfd_seek (abfd, symoff, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, symwidth, abfd) != symwidth)
|
||||
|| bfd_bread ((void *) buf, symwidth, abfd) != symwidth)
|
||||
{
|
||||
fprintf (stderr, "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %lu\n",
|
||||
symwidth, (unsigned long) symoff);
|
||||
|
@ -1788,7 +1786,7 @@ bfd_mach_o_read_symtab_strtab (bfd *abfd)
|
|||
return -1;
|
||||
|
||||
if (bfd_seek (abfd, sym->stroff, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) sym->strtab, sym->strsize, abfd) != sym->strsize)
|
||||
|| bfd_bread ((void *) sym->strtab, sym->strsize, abfd) != sym->strsize)
|
||||
{
|
||||
bfd_set_error (bfd_error_file_truncated);
|
||||
return -1;
|
||||
|
@ -1839,21 +1837,21 @@ bfd_mach_o_read_dysymtab_symbol (bfd *abfd,
|
|||
unsigned long i)
|
||||
{
|
||||
unsigned long isymoff = dysym->indirectsymoff + (i * 4);
|
||||
unsigned long symindex;
|
||||
unsigned long sym_index;
|
||||
unsigned char buf[4];
|
||||
|
||||
BFD_ASSERT (i < dysym->nindirectsyms);
|
||||
|
||||
if (bfd_seek (abfd, isymoff, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 4, abfd) != 4)
|
||||
|| bfd_bread ((void *) buf, 4, abfd) != 4)
|
||||
{
|
||||
fprintf (stderr, "bfd_mach_o_read_dysymtab_symbol: unable to read %lu bytes at %lu\n",
|
||||
(unsigned long) 4, isymoff);
|
||||
return -1;
|
||||
}
|
||||
symindex = bfd_h_get_32 (abfd, buf);
|
||||
sym_index = bfd_h_get_32 (abfd, buf);
|
||||
|
||||
return bfd_mach_o_read_symtab_symbol (abfd, sym, s, symindex);
|
||||
return bfd_mach_o_read_symtab_symbol (abfd, sym, s, sym_index);
|
||||
}
|
||||
|
||||
static const char *
|
||||
|
@ -1904,7 +1902,7 @@ bfd_mach_o_read_dylinker (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
|| (command->type == BFD_MACH_O_LC_LOAD_DYLINKER));
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 4, abfd) != 4)
|
||||
|| bfd_bread ((void *) buf, 4, abfd) != 4)
|
||||
return -1;
|
||||
|
||||
nameoff = bfd_h_get_32 (abfd, buf + 0);
|
||||
|
@ -1940,7 +1938,7 @@ bfd_mach_o_read_dylib (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
}
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 16, abfd) != 16)
|
||||
|| bfd_bread ((void *) buf, 16, abfd) != 16)
|
||||
return -1;
|
||||
|
||||
nameoff = bfd_h_get_32 (abfd, buf + 0);
|
||||
|
@ -1991,7 +1989,7 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
return -1;
|
||||
|
||||
if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 8, abfd) != 8)
|
||||
|| bfd_bread ((void *) buf, 8, abfd) != 8)
|
||||
return -1;
|
||||
|
||||
offset += 8 + bfd_h_get_32 (abfd, buf + 4) * 4;
|
||||
|
@ -2016,7 +2014,7 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
return -1;
|
||||
|
||||
if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 8, abfd) != 8)
|
||||
|| bfd_bread ((void *) buf, 8, abfd) != 8)
|
||||
return -1;
|
||||
|
||||
cmd->flavours[nflavours].flavour = bfd_h_get_32 (abfd, buf);
|
||||
|
@ -2087,7 +2085,7 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
BFD_ASSERT (command->type == BFD_MACH_O_LC_DYSYMTAB);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 72, abfd) != 72)
|
||||
|| bfd_bread ((void *) buf, 72, abfd) != 72)
|
||||
return -1;
|
||||
|
||||
cmd->ilocalsym = bfd_h_get_32 (abfd, buf + 0);
|
||||
|
@ -2111,7 +2109,6 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
|
||||
if (cmd->nmodtab != 0)
|
||||
{
|
||||
char buf[56];
|
||||
unsigned int i;
|
||||
int wide = bfd_mach_o_wide_p (abfd);
|
||||
unsigned int module_len = wide ? 56 : 52;
|
||||
|
@ -2129,7 +2126,7 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
bfd_mach_o_dylib_module *module = &cmd->dylib_module[i];
|
||||
unsigned long v;
|
||||
|
||||
if (bfd_bread ((PTR) buf, module_len, abfd) != module_len)
|
||||
if (bfd_bread ((void *) buf, module_len, abfd) != module_len)
|
||||
return -1;
|
||||
|
||||
module->module_name_idx = bfd_h_get_32 (abfd, buf + 0);
|
||||
|
@ -2162,7 +2159,6 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
|
||||
if (cmd->ntoc != 0)
|
||||
{
|
||||
char buf[8];
|
||||
unsigned int i;
|
||||
|
||||
cmd->dylib_toc = bfd_alloc
|
||||
|
@ -2177,7 +2173,7 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
{
|
||||
bfd_mach_o_dylib_table_of_content *toc = &cmd->dylib_toc[i];
|
||||
|
||||
if (bfd_bread ((PTR) buf, 8, abfd) != 8)
|
||||
if (bfd_bread ((void *) buf, 8, abfd) != 8)
|
||||
return -1;
|
||||
|
||||
toc->symbol_index = bfd_h_get_32 (abfd, buf + 0);
|
||||
|
@ -2187,7 +2183,6 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
|
||||
if (cmd->nindirectsyms != 0)
|
||||
{
|
||||
char buf[4];
|
||||
unsigned int i;
|
||||
|
||||
cmd->indirect_syms = bfd_alloc
|
||||
|
@ -2202,7 +2197,7 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
{
|
||||
unsigned int *is = &cmd->indirect_syms[i];
|
||||
|
||||
if (bfd_bread ((PTR) buf, 4, abfd) != 4)
|
||||
if (bfd_bread ((void *) buf, 4, abfd) != 4)
|
||||
return -1;
|
||||
|
||||
*is = bfd_h_get_32 (abfd, buf + 0);
|
||||
|
@ -2211,7 +2206,6 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
|
||||
if (cmd->nextrefsyms != 0)
|
||||
{
|
||||
char buf[4];
|
||||
unsigned long v;
|
||||
unsigned int i;
|
||||
|
||||
|
@ -2227,7 +2221,7 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
{
|
||||
bfd_mach_o_dylib_reference *ref = &cmd->ext_refs[i];
|
||||
|
||||
if (bfd_bread ((PTR) buf, 4, abfd) != 4)
|
||||
if (bfd_bread ((void *) buf, 4, abfd) != 4)
|
||||
return -1;
|
||||
|
||||
/* Fields isym and flags are written as bit-fields, thus we need
|
||||
|
@ -2263,7 +2257,7 @@ bfd_mach_o_read_symtab (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
BFD_ASSERT (command->type == BFD_MACH_O_LC_SYMTAB);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 16, abfd) != 16)
|
||||
|| bfd_bread ((void *) buf, 16, abfd) != 16)
|
||||
return -1;
|
||||
|
||||
symtab->symoff = bfd_h_get_32 (abfd, buf);
|
||||
|
@ -2293,7 +2287,7 @@ bfd_mach_o_read_uuid (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
BFD_ASSERT (command->type == BFD_MACH_O_LC_UUID);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) cmd->uuid, 16, abfd) != 16)
|
||||
|| bfd_bread ((void *) cmd->uuid, 16, abfd) != 16)
|
||||
return -1;
|
||||
|
||||
sname = bfd_alloc (abfd, strlen (prefix) + 1);
|
||||
|
@ -2323,7 +2317,7 @@ bfd_mach_o_read_linkedit (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
char buf[8];
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 8, abfd) != 8)
|
||||
|| bfd_bread ((void *) buf, 8, abfd) != 8)
|
||||
return -1;
|
||||
|
||||
cmd->dataoff = bfd_get_32 (abfd, buf + 0);
|
||||
|
@ -2339,7 +2333,7 @@ bfd_mach_o_read_str (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
unsigned long off;
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 4, abfd) != 4)
|
||||
|| bfd_bread ((void *) buf, 4, abfd) != 4)
|
||||
return -1;
|
||||
|
||||
off = bfd_get_32 (abfd, buf + 0);
|
||||
|
@ -2349,7 +2343,7 @@ bfd_mach_o_read_str (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
if (cmd->str == NULL)
|
||||
return -1;
|
||||
if (bfd_seek (abfd, cmd->stroff, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) cmd->str, cmd->str_len, abfd) != cmd->str_len)
|
||||
|| bfd_bread ((void *) cmd->str, cmd->str_len, abfd) != cmd->str_len)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
@ -2361,7 +2355,7 @@ bfd_mach_o_read_dyld_info (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
char buf[40];
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, sizeof (buf), abfd) != sizeof (buf))
|
||||
|| bfd_bread ((void *) buf, sizeof (buf), abfd) != sizeof (buf))
|
||||
return -1;
|
||||
|
||||
cmd->rebase_off = bfd_get_32 (abfd, buf + 0);
|
||||
|
@ -2391,7 +2385,7 @@ bfd_mach_o_read_segment (bfd *abfd,
|
|||
BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT_64);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 64, abfd) != 64)
|
||||
|| bfd_bread ((void *) buf, 64, abfd) != 64)
|
||||
return -1;
|
||||
|
||||
memcpy (seg->segname, buf, 16);
|
||||
|
@ -2411,7 +2405,7 @@ bfd_mach_o_read_segment (bfd *abfd,
|
|||
BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT);
|
||||
|
||||
if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 48, abfd) != 48)
|
||||
|| bfd_bread ((void *) buf, 48, abfd) != 48)
|
||||
return -1;
|
||||
|
||||
memcpy (seg->segname, buf, 16);
|
||||
|
@ -2472,7 +2466,7 @@ bfd_mach_o_read_command (bfd *abfd, bfd_mach_o_load_command *command)
|
|||
|
||||
/* Read command type and length. */
|
||||
if (bfd_seek (abfd, command->offset, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 8, abfd) != 8)
|
||||
|| bfd_bread ((void *) buf, 8, abfd) != 8)
|
||||
return -1;
|
||||
|
||||
command->type = bfd_h_get_32 (abfd, buf) & ~BFD_MACH_O_LC_REQ_DYLD;
|
||||
|
@ -2900,7 +2894,7 @@ bfd_mach_o_archive_p (bfd *abfd)
|
|||
unsigned long i;
|
||||
|
||||
if (bfd_seek (abfd, 0, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 8, abfd) != 8)
|
||||
|| bfd_bread ((void *) buf, 8, abfd) != 8)
|
||||
goto error;
|
||||
|
||||
adata = bfd_alloc (abfd, sizeof (mach_o_fat_data_struct));
|
||||
|
@ -2925,7 +2919,7 @@ bfd_mach_o_archive_p (bfd *abfd)
|
|||
for (i = 0; i < adata->nfat_arch; i++)
|
||||
{
|
||||
if (bfd_seek (abfd, 8 + 20 * i, SEEK_SET) != 0
|
||||
|| bfd_bread ((PTR) buf, 20, abfd) != 20)
|
||||
|| bfd_bread ((void *) buf, 20, abfd) != 20)
|
||||
goto error;
|
||||
adata->archentries[i].cputype = bfd_getb32 (buf);
|
||||
adata->archentries[i].cpusubtype = bfd_getb32 (buf + 4);
|
||||
|
@ -3709,7 +3703,7 @@ bfd_mach_o_print_dyld_info (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
}
|
||||
|
||||
bfd_boolean
|
||||
bfd_mach_o_bfd_print_private_bfd_data (bfd *abfd, PTR ptr)
|
||||
bfd_mach_o_bfd_print_private_bfd_data (bfd *abfd, void * ptr)
|
||||
{
|
||||
bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
|
||||
FILE *file = (FILE *) ptr;
|
||||
|
@ -3733,10 +3727,10 @@ bfd_mach_o_bfd_print_private_bfd_data (bfd *abfd, PTR ptr)
|
|||
case BFD_MACH_O_LC_UUID:
|
||||
{
|
||||
bfd_mach_o_uuid_command *uuid = &cmd->command.uuid;
|
||||
unsigned int i;
|
||||
unsigned int j;
|
||||
|
||||
for (i = 0; i < sizeof (uuid->uuid); i++)
|
||||
fprintf (file, " %02x", uuid->uuid[i]);
|
||||
for (j = 0; j < sizeof (uuid->uuid); j ++)
|
||||
fprintf (file, " %02x", uuid->uuid[j]);
|
||||
fputc ('\n', file);
|
||||
}
|
||||
break;
|
||||
|
|
14
bfd/merge.c
14
bfd/merge.c
|
@ -136,12 +136,12 @@ static struct sec_merge_hash_entry *
|
|||
sec_merge_hash_lookup (struct sec_merge_hash *table, const char *string,
|
||||
unsigned int alignment, bfd_boolean create)
|
||||
{
|
||||
register const unsigned char *s;
|
||||
register unsigned long hash;
|
||||
register unsigned int c;
|
||||
const unsigned char *s;
|
||||
unsigned long hash;
|
||||
unsigned int c;
|
||||
struct sec_merge_hash_entry *hashp;
|
||||
unsigned int len, i;
|
||||
unsigned int index;
|
||||
unsigned int _index;
|
||||
|
||||
hash = 0;
|
||||
len = 0;
|
||||
|
@ -192,8 +192,8 @@ sec_merge_hash_lookup (struct sec_merge_hash *table, const char *string,
|
|||
len = table->entsize;
|
||||
}
|
||||
|
||||
index = hash % table->table.size;
|
||||
for (hashp = (struct sec_merge_hash_entry *) table->table.table[index];
|
||||
_index = hash % table->table.size;
|
||||
for (hashp = (struct sec_merge_hash_entry *) table->table.table[_index];
|
||||
hashp != NULL;
|
||||
hashp = (struct sec_merge_hash_entry *) hashp->root.next)
|
||||
{
|
||||
|
@ -263,7 +263,7 @@ static struct sec_merge_hash_entry *
|
|||
sec_merge_add (struct sec_merge_hash *tab, const char *str,
|
||||
unsigned int alignment, struct sec_merge_sec_info *secinfo)
|
||||
{
|
||||
register struct sec_merge_hash_entry *entry;
|
||||
struct sec_merge_hash_entry *entry;
|
||||
|
||||
entry = sec_merge_hash_lookup (tab, str, alignment, TRUE);
|
||||
if (entry == NULL)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Support for 32-bit SPARC NLM (NetWare Loadable Module)
|
||||
Copyright 1993, 1994, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
||||
2007 Free Software Foundation, Inc.
|
||||
2007, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
|
@ -93,7 +93,7 @@ nlm_sparc_read_reloc (bfd *abfd,
|
|||
arelent *rel)
|
||||
{
|
||||
bfd_vma val, addend;
|
||||
unsigned int index;
|
||||
unsigned int howto_index;
|
||||
unsigned int type;
|
||||
struct nlm32_sparc_reloc_ext tmp_reloc;
|
||||
asection *code_sec, *data_sec;
|
||||
|
@ -114,12 +114,12 @@ nlm_sparc_read_reloc (bfd *abfd,
|
|||
rel->addend = addend;
|
||||
rel->howto = NULL;
|
||||
|
||||
for (index = 0;
|
||||
index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type);
|
||||
index++)
|
||||
if (nlm32_sparc_howto_table[index].type == type)
|
||||
for (howto_index = 0;
|
||||
howto_index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type);
|
||||
howto_index++)
|
||||
if (nlm32_sparc_howto_table[howto_index].type == type)
|
||||
{
|
||||
rel->howto = &nlm32_sparc_howto_table[index];
|
||||
rel->howto = &nlm32_sparc_howto_table[howto_index];
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -139,15 +139,15 @@ nlm_sparc_write_reloc (bfd * abfd, asection * sec, arelent * rel)
|
|||
{
|
||||
bfd_vma val;
|
||||
struct nlm32_sparc_reloc_ext tmp_reloc;
|
||||
unsigned int index;
|
||||
unsigned int howto_index;
|
||||
int type = -1;
|
||||
reloc_howto_type *tmp;
|
||||
|
||||
for (index = 0;
|
||||
index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type);
|
||||
index++)
|
||||
for (howto_index = 0;
|
||||
howto_index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type);
|
||||
howto_index++)
|
||||
{
|
||||
tmp = &nlm32_sparc_howto_table[index];
|
||||
tmp = &nlm32_sparc_howto_table[howto_index];
|
||||
|
||||
if (tmp->rightshift == rel->howto->rightshift
|
||||
&& tmp->size == rel->howto->size
|
||||
|
|
14
bfd/oasys.c
14
bfd/oasys.c
|
@ -786,7 +786,7 @@ oasys_write_syms (bfd *abfd)
|
|||
{
|
||||
unsigned int count;
|
||||
asymbol **generic = bfd_get_outsymbols (abfd);
|
||||
unsigned int index = 0;
|
||||
unsigned int sym_index = 0;
|
||||
|
||||
for (count = 0; count < bfd_get_symcount (abfd); count++)
|
||||
{
|
||||
|
@ -799,8 +799,8 @@ oasys_write_syms (bfd *abfd)
|
|||
if (bfd_is_com_section (g->section))
|
||||
{
|
||||
symbol.relb = RELOCATION_TYPE_COM;
|
||||
H_PUT_16 (abfd, index, symbol.refno);
|
||||
index++;
|
||||
H_PUT_16 (abfd, sym_index, symbol.refno);
|
||||
sym_index++;
|
||||
}
|
||||
else if (bfd_is_abs_section (g->section))
|
||||
{
|
||||
|
@ -810,9 +810,9 @@ oasys_write_syms (bfd *abfd)
|
|||
else if (bfd_is_und_section (g->section))
|
||||
{
|
||||
symbol.relb = RELOCATION_TYPE_UND;
|
||||
H_PUT_16 (abfd, index, symbol.refno);
|
||||
/* Overload the value field with the output index number */
|
||||
index++;
|
||||
H_PUT_16 (abfd, sym_index, symbol.refno);
|
||||
/* Overload the value field with the output sym_index number */
|
||||
sym_index++;
|
||||
}
|
||||
else if (g->flags & BSF_DEBUGGING)
|
||||
/* Throw it away. */
|
||||
|
@ -859,7 +859,7 @@ oasys_write_syms (bfd *abfd)
|
|||
name[0]) + l))
|
||||
return FALSE;
|
||||
}
|
||||
g->value = index - 1;
|
||||
g->value = sym_index - 1;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
|
55
bfd/opncls.c
55
bfd/opncls.c
|
@ -523,19 +523,12 @@ static const struct bfd_iovec opncls_iovec = {
|
|||
|
||||
bfd *
|
||||
bfd_openr_iovec (const char *filename, const char *target,
|
||||
void *(*open) (struct bfd *nbfd,
|
||||
void *open_closure),
|
||||
void *(*_open) (struct bfd *, void *),
|
||||
void *open_closure,
|
||||
file_ptr (*pread) (struct bfd *abfd,
|
||||
void *stream,
|
||||
void *buf,
|
||||
file_ptr nbytes,
|
||||
file_ptr offset),
|
||||
int (*close) (struct bfd *nbfd,
|
||||
void *stream),
|
||||
int (*stat) (struct bfd *abfd,
|
||||
void *stream,
|
||||
struct stat *sb))
|
||||
file_ptr (*_pread) (struct bfd *, void *, void *, file_ptr,
|
||||
file_ptr),
|
||||
int (*_close) (struct bfd *, void *),
|
||||
int (*_stat) (struct bfd *, void *, struct stat *))
|
||||
{
|
||||
bfd *nbfd;
|
||||
const bfd_target *target_vec;
|
||||
|
@ -557,7 +550,7 @@ bfd_openr_iovec (const char *filename, const char *target,
|
|||
nbfd->direction = read_direction;
|
||||
|
||||
/* `open (...)' would get expanded by an the open(2) syscall macro. */
|
||||
stream = (*open) (nbfd, open_closure);
|
||||
stream = (*_open) (nbfd, open_closure);
|
||||
if (stream == NULL)
|
||||
{
|
||||
_bfd_delete_bfd (nbfd);
|
||||
|
@ -566,9 +559,9 @@ bfd_openr_iovec (const char *filename, const char *target,
|
|||
|
||||
vec = (struct opncls *) bfd_zalloc (nbfd, sizeof (struct opncls));
|
||||
vec->stream = stream;
|
||||
vec->pread = pread;
|
||||
vec->close = close;
|
||||
vec->stat = stat;
|
||||
vec->pread = _pread;
|
||||
vec->close = _close;
|
||||
vec->stat = _stat;
|
||||
|
||||
nbfd->iovec = &opncls_iovec;
|
||||
nbfd->iostream = vec;
|
||||
|
@ -1234,7 +1227,7 @@ DESCRIPTION
|
|||
static char *
|
||||
find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
|
||||
{
|
||||
char *basename;
|
||||
char *base;
|
||||
char *dir;
|
||||
char *debugfile;
|
||||
char *canon_dir;
|
||||
|
@ -1253,13 +1246,13 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
basename = get_debug_link_info (abfd, & crc32);
|
||||
if (basename == NULL)
|
||||
base = get_debug_link_info (abfd, & crc32);
|
||||
if (base == NULL)
|
||||
return NULL;
|
||||
|
||||
if (basename[0] == '\0')
|
||||
if (base[0] == '\0')
|
||||
{
|
||||
free (basename);
|
||||
free (base);
|
||||
bfd_set_error (bfd_error_no_debug_section);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1271,7 +1264,7 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
|
|||
dir = (char *) bfd_malloc (dirlen + 1);
|
||||
if (dir == NULL)
|
||||
{
|
||||
free (basename);
|
||||
free (base);
|
||||
return NULL;
|
||||
}
|
||||
memcpy (dir, abfd->filename, dirlen);
|
||||
|
@ -1289,11 +1282,11 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
|
|||
bfd_malloc (strlen (debug_file_directory) + 1
|
||||
+ (canon_dirlen > dirlen ? canon_dirlen : dirlen)
|
||||
+ strlen (".debug/")
|
||||
+ strlen (basename)
|
||||
+ strlen (base)
|
||||
+ 1);
|
||||
if (debugfile == NULL)
|
||||
{
|
||||
free (basename);
|
||||
free (base);
|
||||
free (dir);
|
||||
free (canon_dir);
|
||||
return NULL;
|
||||
|
@ -1301,11 +1294,11 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
|
|||
|
||||
/* First try in the same directory as the original file: */
|
||||
strcpy (debugfile, dir);
|
||||
strcat (debugfile, basename);
|
||||
strcat (debugfile, base);
|
||||
|
||||
if (separate_debug_file_exists (debugfile, crc32))
|
||||
{
|
||||
free (basename);
|
||||
free (base);
|
||||
free (dir);
|
||||
free (canon_dir);
|
||||
return debugfile;
|
||||
|
@ -1314,11 +1307,11 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
|
|||
/* Then try in a subdirectory called .debug. */
|
||||
strcpy (debugfile, dir);
|
||||
strcat (debugfile, ".debug/");
|
||||
strcat (debugfile, basename);
|
||||
strcat (debugfile, base);
|
||||
|
||||
if (separate_debug_file_exists (debugfile, crc32))
|
||||
{
|
||||
free (basename);
|
||||
free (base);
|
||||
free (dir);
|
||||
free (canon_dir);
|
||||
return debugfile;
|
||||
|
@ -1332,18 +1325,18 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
|
|||
&& canon_dir[0] != '/')
|
||||
strcat (debugfile, "/");
|
||||
strcat (debugfile, canon_dir);
|
||||
strcat (debugfile, basename);
|
||||
strcat (debugfile, base);
|
||||
|
||||
if (separate_debug_file_exists (debugfile, crc32))
|
||||
{
|
||||
free (basename);
|
||||
free (base);
|
||||
free (dir);
|
||||
free (canon_dir);
|
||||
return debugfile;
|
||||
}
|
||||
|
||||
free (debugfile);
|
||||
free (basename);
|
||||
free (base);
|
||||
free (dir);
|
||||
free (canon_dir);
|
||||
return NULL;
|
||||
|
|
10
bfd/pdp11.c
10
bfd/pdp11.c
|
@ -1569,7 +1569,7 @@ add_to_stringtab (bfd *abfd,
|
|||
bfd_boolean copy)
|
||||
{
|
||||
bfd_boolean hash;
|
||||
bfd_size_type index;
|
||||
bfd_size_type str_index;
|
||||
|
||||
/* An index of 0 always means the empty string. */
|
||||
if (str == 0 || *str == '\0')
|
||||
|
@ -1581,14 +1581,14 @@ add_to_stringtab (bfd *abfd,
|
|||
if ((abfd->flags & BFD_TRADITIONAL_FORMAT) != 0)
|
||||
hash = FALSE;
|
||||
|
||||
index = _bfd_stringtab_add (tab, str, hash, copy);
|
||||
str_index = _bfd_stringtab_add (tab, str, hash, copy);
|
||||
|
||||
if (index != (bfd_size_type) -1)
|
||||
if (str_index != (bfd_size_type) -1)
|
||||
/* Add BYTES_IN_LONG to the return value to account for the
|
||||
space taken up by the string table size. */
|
||||
index += BYTES_IN_LONG;
|
||||
str_index += BYTES_IN_LONG;
|
||||
|
||||
return index;
|
||||
return str_index;
|
||||
}
|
||||
|
||||
/* Write out a strtab. ABFD is already at the right location in the
|
||||
|
|
|
@ -1784,7 +1784,7 @@ _bfd_XX_print_ce_compressed_pdata (bfd * abfd, void * vfile)
|
|||
bfd_size_type i;
|
||||
bfd_size_type start, stop;
|
||||
int onaline = PDATA_ROW_SIZE;
|
||||
struct sym_cache sym_cache = {0, 0} ;
|
||||
struct sym_cache cache = {0, 0} ;
|
||||
|
||||
if (section == NULL
|
||||
|| coff_section_data (abfd, section) == NULL
|
||||
|
@ -1870,7 +1870,7 @@ _bfd_XX_print_ce_compressed_pdata (bfd * abfd, void * vfile)
|
|||
fprintf (file, "%08x", (unsigned int) eh_data);
|
||||
if (eh != 0)
|
||||
{
|
||||
const char *s = my_symbol_for_address (abfd, eh, &sym_cache);
|
||||
const char *s = my_symbol_for_address (abfd, eh, &cache);
|
||||
|
||||
if (s)
|
||||
fprintf (file, " (%s) ", s);
|
||||
|
@ -1890,7 +1890,7 @@ _bfd_XX_print_ce_compressed_pdata (bfd * abfd, void * vfile)
|
|||
|
||||
free (data);
|
||||
|
||||
cleanup_syms (& sym_cache);
|
||||
cleanup_syms (& cache);
|
||||
|
||||
return TRUE;
|
||||
#undef PDATA_ROW_SIZE
|
||||
|
|
16
bfd/pef.c
16
bfd/pef.c
|
@ -730,14 +730,11 @@ bfd_pef_parse_function_stubs (bfd *abfd,
|
|||
asymbol **csym)
|
||||
{
|
||||
const char *const sprefix = "__stub_";
|
||||
|
||||
size_t codepos = 0;
|
||||
unsigned long count = 0;
|
||||
|
||||
bfd_pef_loader_header header;
|
||||
bfd_pef_imported_library *libraries = NULL;
|
||||
bfd_pef_imported_symbol *imports = NULL;
|
||||
|
||||
unsigned long i;
|
||||
int ret;
|
||||
|
||||
|
@ -783,8 +780,7 @@ bfd_pef_parse_function_stubs (bfd *abfd,
|
|||
asymbol sym;
|
||||
const char *symname;
|
||||
char *name;
|
||||
unsigned long index;
|
||||
int ret;
|
||||
unsigned long sym_index;
|
||||
|
||||
if (csym && (csym[count] == NULL))
|
||||
break;
|
||||
|
@ -802,14 +798,14 @@ bfd_pef_parse_function_stubs (bfd *abfd,
|
|||
if ((codepos + 4) > codelen)
|
||||
break;
|
||||
|
||||
ret = bfd_pef_parse_function_stub (abfd, codebuf + codepos, 24, &index);
|
||||
ret = bfd_pef_parse_function_stub (abfd, codebuf + codepos, 24, &sym_index);
|
||||
if (ret < 0)
|
||||
{
|
||||
codepos += 24;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (index >= header.total_imported_symbol_count)
|
||||
if (sym_index >= header.total_imported_symbol_count)
|
||||
{
|
||||
codepos += 24;
|
||||
continue;
|
||||
|
@ -819,12 +815,12 @@ bfd_pef_parse_function_stubs (bfd *abfd,
|
|||
size_t max, namelen;
|
||||
const char *s;
|
||||
|
||||
if (loaderlen < (header.loader_strings_offset + imports[index].name))
|
||||
if (loaderlen < (header.loader_strings_offset + imports[sym_index].name))
|
||||
goto error;
|
||||
|
||||
max = loaderlen - (header.loader_strings_offset + imports[index].name);
|
||||
max = loaderlen - (header.loader_strings_offset + imports[sym_index].name);
|
||||
symname = (char *) loaderbuf;
|
||||
symname += header.loader_strings_offset + imports[index].name;
|
||||
symname += header.loader_strings_offset + imports[sym_index].name;
|
||||
namelen = 0;
|
||||
for (s = symname; s < (symname + max); s++)
|
||||
{
|
||||
|
|
|
@ -399,9 +399,9 @@ process_otr (bfd *abfd, struct ext_otr *otr, int pass)
|
|||
|
||||
for (j = 0; j < esdids; j++)
|
||||
{
|
||||
int esdid = *srcp++;
|
||||
int id = *srcp++;
|
||||
|
||||
if (esdid)
|
||||
if (id)
|
||||
{
|
||||
int rn = EDATA (abfd, otr->esdid - 1).relocs++;
|
||||
|
||||
|
@ -416,7 +416,7 @@ process_otr (bfd *abfd, struct ext_otr *otr, int pass)
|
|||
EDATA (abfd, otr->esdid - 1).section->relocation + rn;
|
||||
n->address = dst_idx;
|
||||
|
||||
n->sym_ptr_ptr = (asymbol **) (size_t) esdid;
|
||||
n->sym_ptr_ptr = (asymbol **) (size_t) id;
|
||||
n->addend = 0;
|
||||
n->howto = versados_howto_table + ((j & 1) * 2) + (sizeinwords - 1);
|
||||
}
|
||||
|
|
|
@ -729,7 +729,8 @@ _bfd_vms_slurp_gsd (bfd * abfd, int objtype)
|
|||
if (symbol->flags & BSF_FUNCTION)
|
||||
{
|
||||
asymbol *en_sym;
|
||||
char *name = bfd_alloc (abfd, strlen (symbol->name) + 5);
|
||||
|
||||
name = bfd_alloc (abfd, strlen (symbol->name) + 5);
|
||||
|
||||
en_sym = bfd_make_empty_symbol (abfd);
|
||||
if (en_sym == 0)
|
||||
|
|
|
@ -1179,13 +1179,13 @@ build_module_list (bfd *abfd)
|
|||
of debug info in the DST section, as well as the count of
|
||||
program sections (i.e. address spans) it contains. */
|
||||
int modbeg = bfd_getl32 (ptr + DBG_S_L_DMT_MODBEG);
|
||||
int size = bfd_getl32 (ptr + DBG_S_L_DST_SIZE);
|
||||
int msize = bfd_getl32 (ptr + DBG_S_L_DST_SIZE);
|
||||
int count = bfd_getl16 (ptr + DBG_S_W_DMT_PSECT_COUNT);
|
||||
ptr += DBG_S_C_DMT_HEADER_SIZE;
|
||||
|
||||
#if VMS_DEBUG
|
||||
_bfd_vms_debug (3, "module: modbeg = %d, size = %d, count = %d\n",
|
||||
modbeg, size, count);
|
||||
modbeg, msize, count);
|
||||
#endif
|
||||
|
||||
/* We create a 'module' structure for each program section since
|
||||
|
@ -1199,7 +1199,7 @@ build_module_list (bfd *abfd)
|
|||
int length = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_LENGTH);
|
||||
module = new_module (abfd);
|
||||
module->modbeg = modbeg;
|
||||
module->size = size;
|
||||
module->size = msize;
|
||||
module->low = start;
|
||||
module->high = start + length;
|
||||
module->next = list;
|
||||
|
|
|
@ -2318,7 +2318,7 @@ static void etir_output_check (bfd *abfd, asection *section, bfd_vma vaddr,
|
|||
/* Start ETIR record for section #index at virtual addr offset. */
|
||||
|
||||
static void
|
||||
start_etir_record (bfd * abfd, int index, uquad offset, bfd_boolean justoffset)
|
||||
start_etir_record (bfd * abfd, int sec_index, uquad offset, bfd_boolean justoffset)
|
||||
{
|
||||
if (!justoffset)
|
||||
{
|
||||
|
@ -2329,7 +2329,7 @@ start_etir_record (bfd * abfd, int index, uquad offset, bfd_boolean justoffset)
|
|||
|
||||
/* Push start offset. */
|
||||
_bfd_vms_output_begin (abfd, ETIR_S_C_STA_PQ, -1);
|
||||
_bfd_vms_output_long (abfd, (unsigned long) index);
|
||||
_bfd_vms_output_long (abfd, (unsigned long) sec_index);
|
||||
_bfd_vms_output_quad (abfd, (uquad) offset);
|
||||
_bfd_vms_output_flush (abfd);
|
||||
|
||||
|
@ -2346,11 +2346,11 @@ end_etir_record (bfd * abfd)
|
|||
}
|
||||
|
||||
/* Output a STO_IMM command for SSIZE bytes of data from CPR at virtual
|
||||
address VADDR in section specified by INDEX and NAME. */
|
||||
address VADDR in section specified by SEC_INDEX and NAME. */
|
||||
|
||||
static void
|
||||
sto_imm (bfd *abfd, bfd_size_type ssize, unsigned char *cptr, bfd_vma vaddr,
|
||||
int index, const char *name)
|
||||
int sec_index, const char *name)
|
||||
{
|
||||
bfd_size_type size;
|
||||
|
||||
|
@ -2372,7 +2372,7 @@ sto_imm (bfd *abfd, bfd_size_type ssize, unsigned char *cptr, bfd_vma vaddr,
|
|||
if (name [0] && name[1] == 'v' && !strcmp (name, ".vmsdebug"))
|
||||
start_another_etbt_record (abfd);
|
||||
else
|
||||
start_etir_record (abfd, index, vaddr, FALSE);
|
||||
start_etir_record (abfd, sec_index, vaddr, FALSE);
|
||||
|
||||
size = _bfd_vms_output_check (abfd, 0); /* get max size */
|
||||
if (size > ssize) /* more than what's left ? */
|
||||
|
|
|
@ -603,7 +603,7 @@ vms_new_section_hook (bfd * abfd, asection *section)
|
|||
|
||||
if (section_count > PRIV (section_count))
|
||||
{
|
||||
bfd_size_type amt = section_count;
|
||||
amt = section_count;
|
||||
amt *= sizeof (asection *);
|
||||
PRIV (sections) = bfd_realloc_or_free (PRIV (sections), amt);
|
||||
if (PRIV (sections) == NULL)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
dnl Common configure.in fragment
|
||||
|
||||
AC_DEFUN([AM_BINUTILS_WARNINGS],[
|
||||
GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
|
||||
GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow"
|
||||
|
||||
AC_ARG_ENABLE(werror,
|
||||
[ --enable-werror treat compile warnings as errors],
|
||||
|
|
|
@ -687,12 +687,12 @@ bfd_boolean
|
|||
bfd_xcoff_split_import_path (bfd *abfd, const char *filename,
|
||||
const char **imppath, const char **impfile)
|
||||
{
|
||||
const char *basename;
|
||||
const char *base;
|
||||
size_t length;
|
||||
char *path;
|
||||
|
||||
basename = lbasename (filename);
|
||||
length = basename - filename;
|
||||
base = lbasename (filename);
|
||||
length = base - filename;
|
||||
if (length == 0)
|
||||
/* The filename has no directory component, so use an empty path. */
|
||||
*imppath = "";
|
||||
|
@ -711,7 +711,7 @@ bfd_xcoff_split_import_path (bfd *abfd, const char *filename,
|
|||
path[length - 1] = 0;
|
||||
*imppath = path;
|
||||
}
|
||||
*impfile = basename;
|
||||
*impfile = base;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
106
bfd/xsym.c
106
bfd/xsym.c
|
@ -84,11 +84,11 @@ static unsigned long
|
|||
compute_offset (unsigned long first_page,
|
||||
unsigned long page_size,
|
||||
unsigned long entry_size,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
unsigned long entries_per_page = page_size / entry_size;
|
||||
unsigned long page_number = first_page + (index / entries_per_page);
|
||||
unsigned long page_offset = (index % entries_per_page) * entry_size;
|
||||
unsigned long page_number = first_page + (sym_index / entries_per_page);
|
||||
unsigned long page_offset = (sym_index % entries_per_page) * entry_size;
|
||||
|
||||
return (page_number * page_size) + page_offset;
|
||||
}
|
||||
|
@ -530,7 +530,7 @@ bfd_sym_parse_type_table_entry_v32 (unsigned char *buf,
|
|||
int
|
||||
bfd_sym_fetch_resources_table_entry (bfd *abfd,
|
||||
bfd_sym_resources_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_resources_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -542,7 +542,7 @@ bfd_sym_fetch_resources_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -566,7 +566,7 @@ bfd_sym_fetch_resources_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_rte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -581,7 +581,7 @@ bfd_sym_fetch_resources_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_modules_table_entry (bfd *abfd,
|
||||
bfd_sym_modules_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_modules_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -593,7 +593,7 @@ bfd_sym_fetch_modules_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -617,7 +617,7 @@ bfd_sym_fetch_modules_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_mte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -632,7 +632,7 @@ bfd_sym_fetch_modules_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_file_references_table_entry (bfd *abfd,
|
||||
bfd_sym_file_references_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_file_references_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -644,7 +644,7 @@ bfd_sym_fetch_file_references_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -667,7 +667,7 @@ bfd_sym_fetch_file_references_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_frte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -682,7 +682,7 @@ bfd_sym_fetch_file_references_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_contained_modules_table_entry (bfd *abfd,
|
||||
bfd_sym_contained_modules_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_contained_modules_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -694,7 +694,7 @@ bfd_sym_fetch_contained_modules_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -717,7 +717,7 @@ bfd_sym_fetch_contained_modules_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_cmte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -732,7 +732,7 @@ bfd_sym_fetch_contained_modules_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_contained_variables_table_entry (bfd *abfd,
|
||||
bfd_sym_contained_variables_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_contained_variables_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -744,7 +744,7 @@ bfd_sym_fetch_contained_variables_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -767,7 +767,7 @@ bfd_sym_fetch_contained_variables_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_cvte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -782,7 +782,7 @@ bfd_sym_fetch_contained_variables_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_contained_statements_table_entry (bfd *abfd,
|
||||
bfd_sym_contained_statements_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_contained_statements_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -794,7 +794,7 @@ bfd_sym_fetch_contained_statements_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -817,7 +817,7 @@ bfd_sym_fetch_contained_statements_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_csnte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -832,7 +832,7 @@ bfd_sym_fetch_contained_statements_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_contained_labels_table_entry (bfd *abfd,
|
||||
bfd_sym_contained_labels_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_contained_labels_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -844,7 +844,7 @@ bfd_sym_fetch_contained_labels_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -867,7 +867,7 @@ bfd_sym_fetch_contained_labels_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_clte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -882,7 +882,7 @@ bfd_sym_fetch_contained_labels_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_contained_types_table_entry (bfd *abfd,
|
||||
bfd_sym_contained_types_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_contained_types_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -894,7 +894,7 @@ bfd_sym_fetch_contained_types_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -917,7 +917,7 @@ bfd_sym_fetch_contained_types_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_ctte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -932,7 +932,7 @@ bfd_sym_fetch_contained_types_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_file_references_index_table_entry (bfd *abfd,
|
||||
bfd_sym_file_references_index_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_file_references_index_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -944,7 +944,7 @@ bfd_sym_fetch_file_references_index_table_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -967,7 +967,7 @@ bfd_sym_fetch_file_references_index_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_fite.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -982,7 +982,7 @@ bfd_sym_fetch_file_references_index_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_constant_pool_entry (bfd *abfd,
|
||||
bfd_sym_constant_pool_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_constant_pool_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -994,7 +994,7 @@ bfd_sym_fetch_constant_pool_entry (bfd *abfd,
|
|||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return -1;
|
||||
|
||||
switch (sdata->version)
|
||||
|
@ -1017,7 +1017,7 @@ bfd_sym_fetch_constant_pool_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_fite.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -1032,7 +1032,7 @@ bfd_sym_fetch_constant_pool_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_type_table_entry (bfd *abfd,
|
||||
bfd_sym_type_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
void (*parser) (unsigned char *, size_t, bfd_sym_type_table_entry *);
|
||||
unsigned long offset;
|
||||
|
@ -1064,7 +1064,7 @@ bfd_sym_fetch_type_table_entry (bfd *abfd,
|
|||
|
||||
offset = compute_offset (sdata->header.dshb_tte.dti_first_page,
|
||||
sdata->header.dshb_page_size,
|
||||
entry_size, index);
|
||||
entry_size, sym_index);
|
||||
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) < 0)
|
||||
return -1;
|
||||
|
@ -1124,7 +1124,7 @@ bfd_sym_fetch_type_information_table_entry (bfd *abfd,
|
|||
int
|
||||
bfd_sym_fetch_type_table_information (bfd *abfd,
|
||||
bfd_sym_type_information_table_entry *entry,
|
||||
unsigned long index)
|
||||
unsigned long sym_index)
|
||||
{
|
||||
bfd_sym_type_table_entry tindex;
|
||||
bfd_sym_data_struct *sdata = NULL;
|
||||
|
@ -1134,10 +1134,10 @@ bfd_sym_fetch_type_table_information (bfd *abfd,
|
|||
|
||||
if (sdata->header.dshb_tte.dti_object_count <= 99)
|
||||
return -1;
|
||||
if (index < 100)
|
||||
if (sym_index < 100)
|
||||
return -1;
|
||||
|
||||
if (bfd_sym_fetch_type_table_entry (abfd, &tindex, index - 100) < 0)
|
||||
if (bfd_sym_fetch_type_table_entry (abfd, &tindex, sym_index - 100) < 0)
|
||||
return -1;
|
||||
if (bfd_sym_fetch_type_information_table_entry (abfd, entry, tindex) < 0)
|
||||
return -1;
|
||||
|
@ -1146,30 +1146,30 @@ bfd_sym_fetch_type_table_information (bfd *abfd,
|
|||
}
|
||||
|
||||
const unsigned char *
|
||||
bfd_sym_symbol_name (bfd *abfd, unsigned long index)
|
||||
bfd_sym_symbol_name (bfd *abfd, unsigned long sym_index)
|
||||
{
|
||||
bfd_sym_data_struct *sdata = NULL;
|
||||
|
||||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
|
||||
if (index == 0)
|
||||
if (sym_index == 0)
|
||||
return (const unsigned char *) "";
|
||||
|
||||
index *= 2;
|
||||
if ((index / sdata->header.dshb_page_size)
|
||||
sym_index *= 2;
|
||||
if ((sym_index / sdata->header.dshb_page_size)
|
||||
> sdata->header.dshb_nte.dti_page_count)
|
||||
return (const unsigned char *) "\09[INVALID]";
|
||||
|
||||
return (const unsigned char *) sdata->name_table + index;
|
||||
return (const unsigned char *) sdata->name_table + sym_index;
|
||||
}
|
||||
|
||||
const unsigned char *
|
||||
bfd_sym_module_name (bfd *abfd, unsigned long index)
|
||||
bfd_sym_module_name (bfd *abfd, unsigned long sym_index)
|
||||
{
|
||||
bfd_sym_modules_table_entry entry;
|
||||
|
||||
if (bfd_sym_fetch_modules_table_entry (abfd, &entry, index) < 0)
|
||||
if (bfd_sym_fetch_modules_table_entry (abfd, &entry, sym_index) < 0)
|
||||
return (const unsigned char *) "\09[INVALID]";
|
||||
|
||||
return bfd_sym_symbol_name (abfd, entry.mte_nte_index);
|
||||
|
@ -1859,24 +1859,24 @@ bfd_sym_display_name_table_entry (bfd *abfd,
|
|||
FILE *f,
|
||||
unsigned char *entry)
|
||||
{
|
||||
unsigned long index;
|
||||
unsigned long sym_index;
|
||||
unsigned long offset;
|
||||
bfd_sym_data_struct *sdata = NULL;
|
||||
|
||||
BFD_ASSERT (bfd_sym_valid (abfd));
|
||||
sdata = abfd->tdata.sym_data;
|
||||
index = (entry - sdata->name_table) / 2;
|
||||
sym_index = (entry - sdata->name_table) / 2;
|
||||
|
||||
if (sdata->version >= BFD_SYM_VERSION_3_4 && entry[0] == 255 && entry[1] == 0)
|
||||
{
|
||||
unsigned short length = bfd_getb16 (entry + 2);
|
||||
fprintf (f, "[%8lu] \"%.*s\"\n", index, length, entry + 4);
|
||||
fprintf (f, "[%8lu] \"%.*s\"\n", sym_index, length, entry + 4);
|
||||
offset = 2 + length + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! (entry[0] == 0 || (entry[0] == 1 && entry[1] == '\0')))
|
||||
fprintf (f, "[%8lu] \"%.*s\"\n", index, entry[0], entry + 1);
|
||||
fprintf (f, "[%8lu] \"%.*s\"\n", sym_index, entry[0], entry + 1);
|
||||
|
||||
if (sdata->version >= BFD_SYM_VERSION_3_4)
|
||||
offset = entry[0] + 2;
|
||||
|
@ -2178,7 +2178,7 @@ void
|
|||
bfd_sym_display_type_information_table (bfd *abfd, FILE *f)
|
||||
{
|
||||
unsigned long i;
|
||||
bfd_sym_type_table_entry index;
|
||||
bfd_sym_type_table_entry sym_index;
|
||||
bfd_sym_type_information_table_entry entry;
|
||||
bfd_sym_data_struct *sdata = NULL;
|
||||
|
||||
|
@ -2196,13 +2196,13 @@ bfd_sym_display_type_information_table (bfd *abfd, FILE *f)
|
|||
|
||||
for (i = 100; i <= sdata->header.dshb_tte.dti_object_count; i++)
|
||||
{
|
||||
if (bfd_sym_fetch_type_table_entry (abfd, &index, i - 100) < 0)
|
||||
if (bfd_sym_fetch_type_table_entry (abfd, &sym_index, i - 100) < 0)
|
||||
fprintf (f, " [%8lu] [INVALID]\n", i);
|
||||
else
|
||||
{
|
||||
fprintf (f, " [%8lu] (TINFO %lu) ", i, index);
|
||||
fprintf (f, " [%8lu] (TINFO %lu) ", i, sym_index);
|
||||
|
||||
if (bfd_sym_fetch_type_information_table_entry (abfd, &entry, index) < 0)
|
||||
if (bfd_sym_fetch_type_information_table_entry (abfd, &entry, sym_index) < 0)
|
||||
fprintf (f, "[INVALID]");
|
||||
else
|
||||
bfd_sym_print_type_information_table_entry (abfd, f, &entry);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Configurable Xtensa ISA support.
|
||||
Copyright 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||
Copyright 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
|
@ -1028,15 +1028,14 @@ xtensa_operand_encode (xtensa_isa isa, xtensa_opcode opc, int opnd,
|
|||
uint32 test_val, orig_val;
|
||||
|
||||
intop = get_operand (intisa, opc, opnd);
|
||||
if (!intop) return -1;
|
||||
if (!intop)
|
||||
return -1;
|
||||
|
||||
if (!intop->encode)
|
||||
{
|
||||
/* This is a default operand for a field. How can we tell if the
|
||||
value fits in the field? Write the value into the field,
|
||||
read it back, and then make sure we get the same value. */
|
||||
|
||||
xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa;
|
||||
static xtensa_insnbuf tmpbuf = 0;
|
||||
int slot_id;
|
||||
|
||||
|
@ -1081,9 +1080,9 @@ xtensa_operand_encode (xtensa_isa isa, xtensa_opcode opc, int opnd,
|
|||
was successfully encoded is to decode it and check if it matches
|
||||
the original value. */
|
||||
orig_val = *valp;
|
||||
if ((*intop->encode) (valp) ||
|
||||
(test_val = *valp, (*intop->decode) (&test_val)) ||
|
||||
test_val != orig_val)
|
||||
if ((*intop->encode) (valp)
|
||||
|| (test_val = *valp, (*intop->decode) (&test_val))
|
||||
|| test_val != orig_val)
|
||||
{
|
||||
xtisa_errno = xtensa_isa_bad_value;
|
||||
sprintf (xtisa_error_msg, "cannot encode operand value 0x%08x", *valp);
|
||||
|
|
|
@ -1,3 +1,30 @@
|
|||
2009-12-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
* doc/Makefile.in: Regenerate.
|
||||
* ar.c: Fix shadowed variable warnings.
|
||||
* bucomm.c: Likewise.
|
||||
* coffgrok.c: Likewise.
|
||||
* configure: Likewise.
|
||||
* dlltool.c: Likewise.
|
||||
* dllwrap.c: Likewise.
|
||||
* dwarf.c: Likewise.
|
||||
* ieee.c: Likewise.
|
||||
* nlmconv.c: Likewise.
|
||||
* nm.c: Likewise.
|
||||
* objcopy.c: Likewise.
|
||||
* objdump.c: Likewise.
|
||||
* prdbg.c: Likewise.
|
||||
* readelf.c: Likewise.
|
||||
* resbin.c: Likewise.
|
||||
* resrc.c: Likewise.
|
||||
* resres.c: Likewise.
|
||||
* srconv.c: Likewise.
|
||||
* stabs.c: Likewise.
|
||||
* sysdump.c: Likewise.
|
||||
* sysinfo.y: Likewise.
|
||||
* wrstabs.c: Likewise.
|
||||
|
||||
2009-12-10 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* addr2line.c (pretty_print): New variable.
|
||||
|
|
|
@ -54,10 +54,12 @@ DIST_COMMON = NEWS README ChangeLog $(srcdir)/Makefile.in \
|
|||
rcparse.h rcparse.c $(srcdir)/../depcomp $(srcdir)/../ylwrap
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
|
||||
$(top_srcdir)/../config/zlib.m4 \
|
||||
$(top_srcdir)/../bfd/warning.m4 \
|
||||
$(top_srcdir)/../config/depstand.m4 \
|
||||
$(top_srcdir)/../config/gettext-sister.m4 \
|
||||
$(top_srcdir)/../config/iconv.m4 \
|
||||
$(top_srcdir)/../config/largefile.m4 \
|
||||
$(top_srcdir)/../config/lead-dot.m4 \
|
||||
$(top_srcdir)/../config/lib-ld.m4 \
|
||||
$(top_srcdir)/../config/lib-link.m4 \
|
||||
|
|
|
@ -1168,14 +1168,14 @@ move_members (bfd *arch, char **files_to_move)
|
|||
{
|
||||
/* Move this file to the end of the list - first cut from
|
||||
where it is. */
|
||||
bfd *link;
|
||||
bfd *link_bfd;
|
||||
*current_ptr_ptr = current_ptr->archive_next;
|
||||
|
||||
/* Now glue to end */
|
||||
after_bfd = get_pos_bfd (&arch->archive_next, pos_end, NULL);
|
||||
link = *after_bfd;
|
||||
link_bfd = *after_bfd;
|
||||
*after_bfd = current_ptr;
|
||||
current_ptr->archive_next = link;
|
||||
current_ptr->archive_next = link_bfd;
|
||||
|
||||
if (verbose)
|
||||
printf ("m - %s\n", *files_to_move);
|
||||
|
|
|
@ -70,12 +70,12 @@ bfd_nonfatal (const char *string)
|
|||
PROGRAM:file: bfd-error-message
|
||||
PROGRAM:file[section]: bfd-error-message
|
||||
PROGRAM:file: printf-message: bfd-error-message
|
||||
PROGRAM:file[section]: printf-message: bfd-error-message
|
||||
*/
|
||||
PROGRAM:file[section]: printf-message: bfd-error-message. */
|
||||
|
||||
void
|
||||
bfd_nonfatal_message (const char *filename,
|
||||
const bfd *bfd, const asection *section,
|
||||
const bfd *abfd,
|
||||
const asection *section,
|
||||
const char *format, ...)
|
||||
{
|
||||
const char *errmsg = bfd_errmsg (bfd_get_error ());
|
||||
|
@ -85,12 +85,12 @@ bfd_nonfatal_message (const char *filename,
|
|||
va_start (args, format);
|
||||
fprintf (stderr, "%s", program_name);
|
||||
|
||||
if (bfd)
|
||||
if (abfd)
|
||||
{
|
||||
if (!filename)
|
||||
filename = bfd_get_archive_filename (bfd);
|
||||
filename = bfd_get_archive_filename (abfd);
|
||||
if (section)
|
||||
section_name = bfd_get_section_name (bfd, section);
|
||||
section_name = bfd_get_section_name (abfd, section);
|
||||
}
|
||||
if (section_name)
|
||||
fprintf (stderr, ":%s[%s]", filename, section_name);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* coffgrok.c
|
||||
Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2007
|
||||
Free Software Foundation, Inc.
|
||||
Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||
2007, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
|
@ -96,10 +96,11 @@ empty_symbol (void)
|
|||
|
||||
/*int l;*/
|
||||
static void
|
||||
push_scope (int link)
|
||||
push_scope (int slink)
|
||||
{
|
||||
struct coff_scope *n = empty_scope ();
|
||||
if (link)
|
||||
|
||||
if (slink)
|
||||
{
|
||||
if (top_scope)
|
||||
{
|
||||
|
|
2
binutils/configure
vendored
2
binutils/configure
vendored
|
@ -11440,7 +11440,7 @@ esac
|
|||
fi
|
||||
|
||||
|
||||
GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
|
||||
GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow"
|
||||
|
||||
# Check whether --enable-werror was given.
|
||||
if test "${enable_werror+set}" = set; then :
|
||||
|
|
|
@ -879,9 +879,9 @@ inform VPARAMS ((const char * message, ...))
|
|||
}
|
||||
|
||||
static const char *
|
||||
rvaafter (int machine)
|
||||
rvaafter (int mach)
|
||||
{
|
||||
switch (machine)
|
||||
switch (mach)
|
||||
{
|
||||
case MARM:
|
||||
case M386:
|
||||
|
@ -898,16 +898,16 @@ rvaafter (int machine)
|
|||
break;
|
||||
default:
|
||||
/* xgettext:c-format */
|
||||
fatal (_("Internal error: Unknown machine type: %d"), machine);
|
||||
fatal (_("Internal error: Unknown machine type: %d"), mach);
|
||||
break;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
static const char *
|
||||
rvabefore (int machine)
|
||||
rvabefore (int mach)
|
||||
{
|
||||
switch (machine)
|
||||
switch (mach)
|
||||
{
|
||||
case MARM:
|
||||
case M386:
|
||||
|
@ -924,16 +924,16 @@ rvabefore (int machine)
|
|||
return ".rva\t";
|
||||
default:
|
||||
/* xgettext:c-format */
|
||||
fatal (_("Internal error: Unknown machine type: %d"), machine);
|
||||
fatal (_("Internal error: Unknown machine type: %d"), mach);
|
||||
break;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
static const char *
|
||||
asm_prefix (int machine, const char *name)
|
||||
asm_prefix (int mach, const char *name)
|
||||
{
|
||||
switch (machine)
|
||||
switch (mach)
|
||||
{
|
||||
case MARM:
|
||||
case MPPC:
|
||||
|
@ -955,7 +955,7 @@ asm_prefix (int machine, const char *name)
|
|||
return "_";
|
||||
default:
|
||||
/* xgettext:c-format */
|
||||
fatal (_("Internal error: Unknown machine type: %d"), machine);
|
||||
fatal (_("Internal error: Unknown machine type: %d"), mach);
|
||||
break;
|
||||
}
|
||||
return "";
|
||||
|
@ -1155,7 +1155,7 @@ def_stacksize (int reserve, int commit)
|
|||
import_list. It is used by def_import. */
|
||||
|
||||
static void
|
||||
append_import (const char *symbol_name, const char *dll_name, int func_ordinal,
|
||||
append_import (const char *symbol_name, const char *dllname, int func_ordinal,
|
||||
const char *its_name)
|
||||
{
|
||||
iheadtype **pq;
|
||||
|
@ -1163,7 +1163,7 @@ append_import (const char *symbol_name, const char *dll_name, int func_ordinal,
|
|||
|
||||
for (pq = &import_list; *pq != NULL; pq = &(*pq)->next)
|
||||
{
|
||||
if (strcmp ((*pq)->dllname, dll_name) == 0)
|
||||
if (strcmp ((*pq)->dllname, dllname) == 0)
|
||||
{
|
||||
q = *pq;
|
||||
q->functail->next = xmalloc (sizeof (ifunctype));
|
||||
|
@ -1178,7 +1178,7 @@ append_import (const char *symbol_name, const char *dll_name, int func_ordinal,
|
|||
}
|
||||
|
||||
q = xmalloc (sizeof (iheadtype));
|
||||
q->dllname = xstrdup (dll_name);
|
||||
q->dllname = xstrdup (dllname);
|
||||
q->nfuncs = 1;
|
||||
q->funchead = xmalloc (sizeof (ifunctype));
|
||||
q->functail = q->funchead;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* dllwrap.c -- wrapper for DLLTOOL and GCC to generate PE style DLLs
|
||||
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
|
||||
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Mumit Khan (khan@xraylith.wisc.edu).
|
||||
|
||||
|
@ -182,20 +182,20 @@ warn VPARAMS ((const char *format, ...))
|
|||
appropriate. */
|
||||
|
||||
static char *
|
||||
look_for_prog (const char *prog_name, const char *prefix, int end_prefix)
|
||||
look_for_prog (const char *progname, const char *prefix, int end_prefix)
|
||||
{
|
||||
struct stat s;
|
||||
char *cmd;
|
||||
|
||||
cmd = xmalloc (strlen (prefix)
|
||||
+ strlen (prog_name)
|
||||
+ strlen (progname)
|
||||
#ifdef HAVE_EXECUTABLE_SUFFIX
|
||||
+ strlen (EXECUTABLE_SUFFIX)
|
||||
#endif
|
||||
+ 10);
|
||||
strcpy (cmd, prefix);
|
||||
|
||||
sprintf (cmd + end_prefix, "%s", prog_name);
|
||||
sprintf (cmd + end_prefix, "%s", progname);
|
||||
|
||||
if (strchr (cmd, '/') != NULL)
|
||||
{
|
||||
|
@ -973,7 +973,6 @@ Creating one, but that may not be what you want"));
|
|||
|
||||
if (! def_file_seen)
|
||||
{
|
||||
int i;
|
||||
dyn_string_t step_pre1;
|
||||
|
||||
step_pre1 = dyn_string_new (1024);
|
||||
|
|
|
@ -38,10 +38,12 @@ subdir = doc
|
|||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
|
||||
$(top_srcdir)/../config/zlib.m4 \
|
||||
$(top_srcdir)/../bfd/warning.m4 \
|
||||
$(top_srcdir)/../config/depstand.m4 \
|
||||
$(top_srcdir)/../config/gettext-sister.m4 \
|
||||
$(top_srcdir)/../config/iconv.m4 \
|
||||
$(top_srcdir)/../config/largefile.m4 \
|
||||
$(top_srcdir)/../config/lead-dot.m4 \
|
||||
$(top_srcdir)/../config/lib-ld.m4 \
|
||||
$(top_srcdir)/../config/lib-link.m4 \
|
||||
|
|
229
binutils/dwarf.c
229
binutils/dwarf.c
|
@ -438,23 +438,23 @@ static abbrev_entry *last_abbrev = NULL;
|
|||
static void
|
||||
free_abbrevs (void)
|
||||
{
|
||||
abbrev_entry *abbrev;
|
||||
abbrev_entry *abbrv;
|
||||
|
||||
for (abbrev = first_abbrev; abbrev;)
|
||||
for (abbrv = first_abbrev; abbrv;)
|
||||
{
|
||||
abbrev_entry *next = abbrev->next;
|
||||
abbrev_entry *next_abbrev = abbrv->next;
|
||||
abbrev_attr *attr;
|
||||
|
||||
for (attr = abbrev->first_attr; attr;)
|
||||
for (attr = abbrv->first_attr; attr;)
|
||||
{
|
||||
abbrev_attr *next = attr->next;
|
||||
abbrev_attr *next_attr = attr->next;
|
||||
|
||||
free (attr);
|
||||
attr = next;
|
||||
attr = next_attr;
|
||||
}
|
||||
|
||||
free (abbrev);
|
||||
abbrev = next;
|
||||
free (abbrv);
|
||||
abbrv = next_abbrev;
|
||||
}
|
||||
|
||||
last_abbrev = first_abbrev = NULL;
|
||||
|
@ -1355,19 +1355,19 @@ read_and_display_attr_value (unsigned long attribute,
|
|||
if (form == DW_FORM_data4 || form == DW_FORM_data8)
|
||||
{
|
||||
/* Process location list. */
|
||||
unsigned int max = debug_info_p->max_loc_offsets;
|
||||
unsigned int lmax = debug_info_p->max_loc_offsets;
|
||||
unsigned int num = debug_info_p->num_loc_offsets;
|
||||
|
||||
if (max == 0 || num >= max)
|
||||
if (lmax == 0 || num >= lmax)
|
||||
{
|
||||
max += 1024;
|
||||
lmax += 1024;
|
||||
debug_info_p->loc_offsets = (long unsigned int *)
|
||||
xcrealloc (debug_info_p->loc_offsets,
|
||||
max, sizeof (*debug_info_p->loc_offsets));
|
||||
lmax, sizeof (*debug_info_p->loc_offsets));
|
||||
debug_info_p->have_frame_base = (int *)
|
||||
xcrealloc (debug_info_p->have_frame_base,
|
||||
max, sizeof (*debug_info_p->have_frame_base));
|
||||
debug_info_p->max_loc_offsets = max;
|
||||
lmax, sizeof (*debug_info_p->have_frame_base));
|
||||
debug_info_p->max_loc_offsets = lmax;
|
||||
}
|
||||
debug_info_p->loc_offsets [num] = uvalue;
|
||||
debug_info_p->have_frame_base [num] = have_frame_base;
|
||||
|
@ -1384,16 +1384,16 @@ read_and_display_attr_value (unsigned long attribute,
|
|||
if (form == DW_FORM_data4 || form == DW_FORM_data8)
|
||||
{
|
||||
/* Process range list. */
|
||||
unsigned int max = debug_info_p->max_range_lists;
|
||||
unsigned int lmax = debug_info_p->max_range_lists;
|
||||
unsigned int num = debug_info_p->num_range_lists;
|
||||
|
||||
if (max == 0 || num >= max)
|
||||
if (lmax == 0 || num >= lmax)
|
||||
{
|
||||
max += 1024;
|
||||
lmax += 1024;
|
||||
debug_info_p->range_lists = (long unsigned int *)
|
||||
xcrealloc (debug_info_p->range_lists,
|
||||
max, sizeof (*debug_info_p->range_lists));
|
||||
debug_info_p->max_range_lists = max;
|
||||
lmax, sizeof (*debug_info_p->range_lists));
|
||||
debug_info_p->max_range_lists = lmax;
|
||||
}
|
||||
debug_info_p->range_lists [num] = uvalue;
|
||||
debug_info_p->num_range_lists++;
|
||||
|
@ -2226,7 +2226,7 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
|
||||
while (data < end)
|
||||
{
|
||||
DWARF2_Internal_LineInfo info;
|
||||
DWARF2_Internal_LineInfo linfo;
|
||||
unsigned char *standard_opcodes;
|
||||
unsigned char *end_of_sequence;
|
||||
unsigned char *hdrptr;
|
||||
|
@ -2239,13 +2239,13 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
hdroff = hdrptr - start;
|
||||
|
||||
/* Check the length of the block. */
|
||||
info.li_length = byte_get (hdrptr, 4);
|
||||
linfo.li_length = byte_get (hdrptr, 4);
|
||||
hdrptr += 4;
|
||||
|
||||
if (info.li_length == 0xffffffff)
|
||||
if (linfo.li_length == 0xffffffff)
|
||||
{
|
||||
/* This section is 64-bit DWARF 3. */
|
||||
info.li_length = byte_get (hdrptr, 8);
|
||||
linfo.li_length = byte_get (hdrptr, 8);
|
||||
hdrptr += 8;
|
||||
offset_size = 8;
|
||||
initial_length_size = 12;
|
||||
|
@ -2256,7 +2256,7 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
initial_length_size = 4;
|
||||
}
|
||||
|
||||
if (info.li_length + initial_length_size > section->size)
|
||||
if (linfo.li_length + initial_length_size > section->size)
|
||||
{
|
||||
warn
|
||||
(_("The information in section %s appears to be corrupt - the section is too small\n"),
|
||||
|
@ -2265,55 +2265,55 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
}
|
||||
|
||||
/* Check its version number. */
|
||||
info.li_version = byte_get (hdrptr, 2);
|
||||
linfo.li_version = byte_get (hdrptr, 2);
|
||||
hdrptr += 2;
|
||||
if (info.li_version != 2 && info.li_version != 3)
|
||||
if (linfo.li_version != 2 && linfo.li_version != 3)
|
||||
{
|
||||
warn (_("Only DWARF version 2 and 3 line info is currently supported.\n"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
info.li_prologue_length = byte_get (hdrptr, offset_size);
|
||||
linfo.li_prologue_length = byte_get (hdrptr, offset_size);
|
||||
hdrptr += offset_size;
|
||||
info.li_min_insn_length = byte_get (hdrptr, 1);
|
||||
linfo.li_min_insn_length = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_default_is_stmt = byte_get (hdrptr, 1);
|
||||
linfo.li_default_is_stmt = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_line_base = byte_get (hdrptr, 1);
|
||||
linfo.li_line_base = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_line_range = byte_get (hdrptr, 1);
|
||||
linfo.li_line_range = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_opcode_base = byte_get (hdrptr, 1);
|
||||
linfo.li_opcode_base = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
|
||||
/* Sign extend the line base field. */
|
||||
info.li_line_base <<= 24;
|
||||
info.li_line_base >>= 24;
|
||||
linfo.li_line_base <<= 24;
|
||||
linfo.li_line_base >>= 24;
|
||||
|
||||
printf (_(" Offset: 0x%lx\n"), hdroff);
|
||||
printf (_(" Length: %ld\n"), info.li_length);
|
||||
printf (_(" DWARF Version: %d\n"), info.li_version);
|
||||
printf (_(" Prologue Length: %d\n"), info.li_prologue_length);
|
||||
printf (_(" Minimum Instruction Length: %d\n"), info.li_min_insn_length);
|
||||
printf (_(" Initial value of 'is_stmt': %d\n"), info.li_default_is_stmt);
|
||||
printf (_(" Line Base: %d\n"), info.li_line_base);
|
||||
printf (_(" Line Range: %d\n"), info.li_line_range);
|
||||
printf (_(" Opcode Base: %d\n"), info.li_opcode_base);
|
||||
printf (_(" Length: %ld\n"), linfo.li_length);
|
||||
printf (_(" DWARF Version: %d\n"), linfo.li_version);
|
||||
printf (_(" Prologue Length: %d\n"), linfo.li_prologue_length);
|
||||
printf (_(" Minimum Instruction Length: %d\n"), linfo.li_min_insn_length);
|
||||
printf (_(" Initial value of 'is_stmt': %d\n"), linfo.li_default_is_stmt);
|
||||
printf (_(" Line Base: %d\n"), linfo.li_line_base);
|
||||
printf (_(" Line Range: %d\n"), linfo.li_line_range);
|
||||
printf (_(" Opcode Base: %d\n"), linfo.li_opcode_base);
|
||||
|
||||
end_of_sequence = data + info.li_length + initial_length_size;
|
||||
end_of_sequence = data + linfo.li_length + initial_length_size;
|
||||
|
||||
reset_state_machine (info.li_default_is_stmt);
|
||||
reset_state_machine (linfo.li_default_is_stmt);
|
||||
|
||||
/* Display the contents of the Opcodes table. */
|
||||
standard_opcodes = hdrptr;
|
||||
|
||||
printf (_("\n Opcodes:\n"));
|
||||
|
||||
for (i = 1; i < info.li_opcode_base; i++)
|
||||
for (i = 1; i < linfo.li_opcode_base; i++)
|
||||
printf (_(" Opcode %d has %d args\n"), i, standard_opcodes[i - 1]);
|
||||
|
||||
/* Display the contents of the Directory table. */
|
||||
data = standard_opcodes + info.li_opcode_base - 1;
|
||||
data = standard_opcodes + linfo.li_opcode_base - 1;
|
||||
|
||||
if (*data == 0)
|
||||
printf (_("\n The Directory Table is empty.\n"));
|
||||
|
@ -2375,14 +2375,14 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
|
||||
op_code = *data++;
|
||||
|
||||
if (op_code >= info.li_opcode_base)
|
||||
if (op_code >= linfo.li_opcode_base)
|
||||
{
|
||||
op_code -= info.li_opcode_base;
|
||||
uladv = (op_code / info.li_line_range) * info.li_min_insn_length;
|
||||
op_code -= linfo.li_opcode_base;
|
||||
uladv = (op_code / linfo.li_line_range) * linfo.li_min_insn_length;
|
||||
state_machine_regs.address += uladv;
|
||||
printf (_(" Special opcode %d: advance Address by %lu to 0x%lx"),
|
||||
op_code, uladv, state_machine_regs.address);
|
||||
adv = (op_code % info.li_line_range) + info.li_line_base;
|
||||
adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
|
||||
state_machine_regs.line += adv;
|
||||
printf (_(" and Line by %d to %d\n"),
|
||||
adv, state_machine_regs.line);
|
||||
|
@ -2390,7 +2390,7 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
else switch (op_code)
|
||||
{
|
||||
case DW_LNS_extended_op:
|
||||
data += process_extended_line_op (data, info.li_default_is_stmt);
|
||||
data += process_extended_line_op (data, linfo.li_default_is_stmt);
|
||||
break;
|
||||
|
||||
case DW_LNS_copy:
|
||||
|
@ -2399,7 +2399,7 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
|
||||
case DW_LNS_advance_pc:
|
||||
uladv = read_leb128 (data, & bytes_read, 0);
|
||||
uladv *= info.li_min_insn_length;
|
||||
uladv *= linfo.li_min_insn_length;
|
||||
data += bytes_read;
|
||||
state_machine_regs.address += uladv;
|
||||
printf (_(" Advance PC by %lu to 0x%lx\n"), uladv,
|
||||
|
@ -2442,8 +2442,8 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||
break;
|
||||
|
||||
case DW_LNS_const_add_pc:
|
||||
uladv = (((255 - info.li_opcode_base) / info.li_line_range)
|
||||
* info.li_min_insn_length);
|
||||
uladv = (((255 - linfo.li_opcode_base) / linfo.li_line_range)
|
||||
* linfo.li_min_insn_length);
|
||||
state_machine_regs.address += uladv;
|
||||
printf (_(" Advance PC by constant %lu to 0x%lx\n"), uladv,
|
||||
state_machine_regs.address);
|
||||
|
@ -2511,7 +2511,7 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
while (data < end)
|
||||
{
|
||||
/* This loop amounts to one iteration per compilation unit. */
|
||||
DWARF2_Internal_LineInfo info;
|
||||
DWARF2_Internal_LineInfo linfo;
|
||||
unsigned char *standard_opcodes;
|
||||
unsigned char *end_of_sequence;
|
||||
unsigned char *hdrptr;
|
||||
|
@ -2528,13 +2528,13 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
(section 6.2.4 in the Dwarf3 doc). */
|
||||
|
||||
/* Get the length of this CU's line number information block. */
|
||||
info.li_length = byte_get (hdrptr, 4);
|
||||
linfo.li_length = byte_get (hdrptr, 4);
|
||||
hdrptr += 4;
|
||||
|
||||
if (info.li_length == 0xffffffff)
|
||||
if (linfo.li_length == 0xffffffff)
|
||||
{
|
||||
/* This section is 64-bit DWARF 3. */
|
||||
info.li_length = byte_get (hdrptr, 8);
|
||||
linfo.li_length = byte_get (hdrptr, 8);
|
||||
hdrptr += 8;
|
||||
offset_size = 8;
|
||||
initial_length_size = 12;
|
||||
|
@ -2545,7 +2545,7 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
initial_length_size = 4;
|
||||
}
|
||||
|
||||
if (info.li_length + initial_length_size > section->size)
|
||||
if (linfo.li_length + initial_length_size > section->size)
|
||||
{
|
||||
warn (_("The line info appears to be corrupt - "
|
||||
"the section is too small\n"));
|
||||
|
@ -2553,47 +2553,46 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
}
|
||||
|
||||
/* Get this CU's Line Number Block version number. */
|
||||
info.li_version = byte_get (hdrptr, 2);
|
||||
linfo.li_version = byte_get (hdrptr, 2);
|
||||
hdrptr += 2;
|
||||
if (info.li_version != 2 && info.li_version != 3)
|
||||
if (linfo.li_version != 2 && linfo.li_version != 3)
|
||||
{
|
||||
warn (_("Only DWARF version 2 and 3 line info is currently "
|
||||
"supported.\n"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
info.li_prologue_length = byte_get (hdrptr, offset_size);
|
||||
linfo.li_prologue_length = byte_get (hdrptr, offset_size);
|
||||
hdrptr += offset_size;
|
||||
info.li_min_insn_length = byte_get (hdrptr, 1);
|
||||
linfo.li_min_insn_length = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_default_is_stmt = byte_get (hdrptr, 1);
|
||||
linfo.li_default_is_stmt = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_line_base = byte_get (hdrptr, 1);
|
||||
linfo.li_line_base = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_line_range = byte_get (hdrptr, 1);
|
||||
linfo.li_line_range = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
info.li_opcode_base = byte_get (hdrptr, 1);
|
||||
linfo.li_opcode_base = byte_get (hdrptr, 1);
|
||||
hdrptr++;
|
||||
|
||||
/* Sign extend the line base field. */
|
||||
info.li_line_base <<= 24;
|
||||
info.li_line_base >>= 24;
|
||||
linfo.li_line_base <<= 24;
|
||||
linfo.li_line_base >>= 24;
|
||||
|
||||
/* Find the end of this CU's Line Number Information Block. */
|
||||
end_of_sequence = data + info.li_length + initial_length_size;
|
||||
end_of_sequence = data + linfo.li_length + initial_length_size;
|
||||
|
||||
reset_state_machine (info.li_default_is_stmt);
|
||||
reset_state_machine (linfo.li_default_is_stmt);
|
||||
|
||||
/* Save a pointer to the contents of the Opcodes table. */
|
||||
standard_opcodes = hdrptr;
|
||||
|
||||
/* Traverse the Directory table just to count entries. */
|
||||
data = standard_opcodes + info.li_opcode_base - 1;
|
||||
data = standard_opcodes + linfo.li_opcode_base - 1;
|
||||
if (*data != 0)
|
||||
{
|
||||
unsigned int n_directories = 0;
|
||||
unsigned char *ptr_directory_table = data;
|
||||
int i;
|
||||
|
||||
while (*data != 0)
|
||||
{
|
||||
|
@ -2621,7 +2620,6 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
{
|
||||
unsigned int n_files = 0;
|
||||
unsigned char *ptr_file_name_table = data;
|
||||
int i;
|
||||
|
||||
while (*data != 0)
|
||||
{
|
||||
|
@ -2700,13 +2698,13 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
op_code = *data++;
|
||||
prev_line = state_machine_regs.line;
|
||||
|
||||
if (op_code >= info.li_opcode_base)
|
||||
if (op_code >= linfo.li_opcode_base)
|
||||
{
|
||||
op_code -= info.li_opcode_base;
|
||||
uladv = (op_code / info.li_line_range) * info.li_min_insn_length;
|
||||
op_code -= linfo.li_opcode_base;
|
||||
uladv = (op_code / linfo.li_line_range) * linfo.li_min_insn_length;
|
||||
state_machine_regs.address += uladv;
|
||||
|
||||
adv = (op_code % info.li_line_range) + info.li_line_base;
|
||||
adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
|
||||
state_machine_regs.line += adv;
|
||||
is_special_opcode = 1;
|
||||
}
|
||||
|
@ -2715,7 +2713,6 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
case DW_LNS_extended_op:
|
||||
{
|
||||
unsigned int ext_op_code_len;
|
||||
unsigned int bytes_read;
|
||||
unsigned char ext_op_code;
|
||||
unsigned char *op_code_data = data;
|
||||
|
||||
|
@ -2733,7 +2730,7 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
switch (ext_op_code)
|
||||
{
|
||||
case DW_LNE_end_sequence:
|
||||
reset_state_machine (info.li_default_is_stmt);
|
||||
reset_state_machine (linfo.li_default_is_stmt);
|
||||
break;
|
||||
case DW_LNE_set_address:
|
||||
state_machine_regs.address =
|
||||
|
@ -2766,7 +2763,7 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
|
||||
case DW_LNS_advance_pc:
|
||||
uladv = read_leb128 (data, & bytes_read, 0);
|
||||
uladv *= info.li_min_insn_length;
|
||||
uladv *= linfo.li_min_insn_length;
|
||||
data += bytes_read;
|
||||
state_machine_regs.address += uladv;
|
||||
break;
|
||||
|
@ -2813,8 +2810,8 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||
break;
|
||||
|
||||
case DW_LNS_const_add_pc:
|
||||
uladv = (((255 - info.li_opcode_base) / info.li_line_range)
|
||||
* info.li_min_insn_length);
|
||||
uladv = (((255 - linfo.li_opcode_base) / linfo.li_line_range)
|
||||
* linfo.li_min_insn_length);
|
||||
state_machine_regs.address += uladv;
|
||||
break;
|
||||
|
||||
|
@ -2949,7 +2946,7 @@ static int
|
|||
display_debug_pubnames (struct dwarf_section *section,
|
||||
void *file ATTRIBUTE_UNUSED)
|
||||
{
|
||||
DWARF2_Internal_PubNames pubnames;
|
||||
DWARF2_Internal_PubNames names;
|
||||
unsigned char *start = section->start;
|
||||
unsigned char *end = start + section->size;
|
||||
|
||||
|
@ -2967,11 +2964,11 @@ display_debug_pubnames (struct dwarf_section *section,
|
|||
|
||||
data = start;
|
||||
|
||||
pubnames.pn_length = byte_get (data, 4);
|
||||
names.pn_length = byte_get (data, 4);
|
||||
data += 4;
|
||||
if (pubnames.pn_length == 0xffffffff)
|
||||
if (names.pn_length == 0xffffffff)
|
||||
{
|
||||
pubnames.pn_length = byte_get (data, 8);
|
||||
names.pn_length = byte_get (data, 8);
|
||||
data += 8;
|
||||
offset_size = 8;
|
||||
initial_length_size = 12;
|
||||
|
@ -2982,24 +2979,24 @@ display_debug_pubnames (struct dwarf_section *section,
|
|||
initial_length_size = 4;
|
||||
}
|
||||
|
||||
pubnames.pn_version = byte_get (data, 2);
|
||||
names.pn_version = byte_get (data, 2);
|
||||
data += 2;
|
||||
|
||||
pubnames.pn_offset = byte_get (data, offset_size);
|
||||
names.pn_offset = byte_get (data, offset_size);
|
||||
data += offset_size;
|
||||
|
||||
if (num_debug_info_entries != DEBUG_INFO_UNAVAILABLE
|
||||
&& num_debug_info_entries > 0
|
||||
&& find_debug_info_for_offset (pubnames.pn_offset) == NULL)
|
||||
&& find_debug_info_for_offset (names.pn_offset) == NULL)
|
||||
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
|
||||
pubnames.pn_offset, section->name);
|
||||
names.pn_offset, section->name);
|
||||
|
||||
pubnames.pn_size = byte_get (data, offset_size);
|
||||
names.pn_size = byte_get (data, offset_size);
|
||||
data += offset_size;
|
||||
|
||||
start += pubnames.pn_length + initial_length_size;
|
||||
start += names.pn_length + initial_length_size;
|
||||
|
||||
if (pubnames.pn_version != 2 && pubnames.pn_version != 3)
|
||||
if (names.pn_version != 2 && names.pn_version != 3)
|
||||
{
|
||||
static int warned = 0;
|
||||
|
||||
|
@ -3013,13 +3010,13 @@ display_debug_pubnames (struct dwarf_section *section,
|
|||
}
|
||||
|
||||
printf (_(" Length: %ld\n"),
|
||||
pubnames.pn_length);
|
||||
names.pn_length);
|
||||
printf (_(" Version: %d\n"),
|
||||
pubnames.pn_version);
|
||||
names.pn_version);
|
||||
printf (_(" Offset into .debug_info section: 0x%lx\n"),
|
||||
pubnames.pn_offset);
|
||||
names.pn_offset);
|
||||
printf (_(" Size of area in .debug_info section: %ld\n"),
|
||||
pubnames.pn_size);
|
||||
names.pn_size);
|
||||
|
||||
printf (_("\n Offset\tName\n"));
|
||||
|
||||
|
@ -3464,7 +3461,7 @@ display_debug_aranges (struct dwarf_section *section,
|
|||
{
|
||||
unsigned char *hdrptr;
|
||||
DWARF2_Internal_ARange arange;
|
||||
unsigned char *ranges;
|
||||
unsigned char *addr_ranges;
|
||||
dwarf_vma length;
|
||||
dwarf_vma address;
|
||||
unsigned char address_size;
|
||||
|
@ -3536,24 +3533,24 @@ display_debug_aranges (struct dwarf_section *section,
|
|||
else
|
||||
printf (_("\n Address Length\n"));
|
||||
|
||||
ranges = hdrptr;
|
||||
addr_ranges = hdrptr;
|
||||
|
||||
/* Must pad to an alignment boundary that is twice the address size. */
|
||||
excess = (hdrptr - start) % (2 * address_size);
|
||||
if (excess)
|
||||
ranges += (2 * address_size) - excess;
|
||||
addr_ranges += (2 * address_size) - excess;
|
||||
|
||||
start += arange.ar_length + initial_length_size;
|
||||
|
||||
while (ranges + 2 * address_size <= start)
|
||||
while (addr_ranges + 2 * address_size <= start)
|
||||
{
|
||||
address = byte_get (ranges, address_size);
|
||||
address = byte_get (addr_ranges, address_size);
|
||||
|
||||
ranges += address_size;
|
||||
addr_ranges += address_size;
|
||||
|
||||
length = byte_get (ranges, address_size);
|
||||
length = byte_get (addr_ranges, address_size);
|
||||
|
||||
ranges += address_size;
|
||||
addr_ranges += address_size;
|
||||
|
||||
printf (" ");
|
||||
print_dwarf_vma (address, address_size);
|
||||
|
@ -3880,11 +3877,11 @@ frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs)
|
|||
|
||||
if (*need_col_headers)
|
||||
{
|
||||
static const char *loc = " LOC";
|
||||
static const char *sloc = " LOC";
|
||||
|
||||
*need_col_headers = 0;
|
||||
|
||||
printf ("%-*s CFA ", eh_addr_size * 2, loc);
|
||||
printf ("%-*s CFA ", eh_addr_size * 2, sloc);
|
||||
|
||||
for (r = 0; r < *max_regs; r++)
|
||||
if (fc->col_type[r] != DW_CFA_unreferenced)
|
||||
|
@ -4218,7 +4215,7 @@ display_debug_frames (struct dwarf_section *section,
|
|||
while (start < block_end)
|
||||
{
|
||||
unsigned op, opa;
|
||||
unsigned long reg, tmp;
|
||||
unsigned long reg, temp;
|
||||
|
||||
op = *start++;
|
||||
opa = op & 0x3f;
|
||||
|
@ -4289,14 +4286,14 @@ display_debug_frames (struct dwarf_section *section,
|
|||
LEB ();
|
||||
break;
|
||||
case DW_CFA_def_cfa_expression:
|
||||
tmp = LEB ();
|
||||
start += tmp;
|
||||
temp = LEB ();
|
||||
start += temp;
|
||||
break;
|
||||
case DW_CFA_expression:
|
||||
case DW_CFA_val_expression:
|
||||
reg = LEB ();
|
||||
tmp = LEB ();
|
||||
start += tmp;
|
||||
temp = LEB ();
|
||||
start += temp;
|
||||
if (frame_need_space (fc, reg) >= 0)
|
||||
fc->col_type[reg] = DW_CFA_undefined;
|
||||
break;
|
||||
|
@ -4918,10 +4915,10 @@ dwarf_select_sections_by_names (const char *names)
|
|||
void
|
||||
dwarf_select_sections_by_letters (const char *letters)
|
||||
{
|
||||
unsigned int index = 0;
|
||||
unsigned int lindex = 0;
|
||||
|
||||
while (letters[index])
|
||||
switch (letters[index++])
|
||||
while (letters[lindex])
|
||||
switch (letters[lindex++])
|
||||
{
|
||||
case 'i':
|
||||
do_debug_info = 1;
|
||||
|
|
|
@ -2616,7 +2616,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
|
|||
case 'b':
|
||||
{
|
||||
bfd_vma flags, cinline;
|
||||
const char *basename, *fieldname;
|
||||
const char *base, *fieldname;
|
||||
unsigned long baselen, fieldlen;
|
||||
char *basecopy;
|
||||
debug_type basetype;
|
||||
|
@ -2628,7 +2628,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
|
|||
/* This represents a base or friend class. */
|
||||
|
||||
if (! ieee_require_asn (info, pp, &flags)
|
||||
|| ! ieee_require_atn65 (info, pp, &basename, &baselen)
|
||||
|| ! ieee_require_atn65 (info, pp, &base, &baselen)
|
||||
|| ! ieee_require_asn (info, pp, &cinline)
|
||||
|| ! ieee_require_atn65 (info, pp, &fieldname, &fieldlen))
|
||||
return FALSE;
|
||||
|
@ -2650,7 +2650,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
basecopy = savestring (basename, baselen);
|
||||
basecopy = savestring (base, baselen);
|
||||
basetype = debug_find_tagged_type (dhandle, basecopy,
|
||||
DEBUG_KIND_ILLEGAL);
|
||||
free (basecopy);
|
||||
|
@ -3113,7 +3113,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
|
|||
|
||||
case 'z':
|
||||
{
|
||||
const char *vname, *basename;
|
||||
const char *vname, *base;
|
||||
unsigned long vnamelen, baselen;
|
||||
bfd_vma vsize, control;
|
||||
|
||||
|
@ -3121,7 +3121,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
|
|||
|
||||
if (! ieee_require_atn65 (info, pp, &vname, &vnamelen)
|
||||
|| ! ieee_require_asn (info, pp, &vsize)
|
||||
|| ! ieee_require_atn65 (info, pp, &basename, &baselen)
|
||||
|| ! ieee_require_atn65 (info, pp, &base, &baselen)
|
||||
|| ! ieee_require_asn (info, pp, &control))
|
||||
return FALSE;
|
||||
count -= 4;
|
||||
|
@ -3138,7 +3138,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
|
|||
{
|
||||
char *basecopy;
|
||||
|
||||
basecopy = savestring (basename, baselen);
|
||||
basecopy = savestring (base, baselen);
|
||||
vptrbase = debug_find_tagged_type (dhandle, basecopy,
|
||||
DEBUG_KIND_ILLEGAL);
|
||||
free (basecopy);
|
||||
|
@ -5980,8 +5980,6 @@ ieee_struct_field (void *p, const char *name, bfd_vma bitpos, bfd_vma bitsize,
|
|||
|
||||
if (referencep)
|
||||
{
|
||||
unsigned int nindx;
|
||||
|
||||
/* We need to output a record recording that this field is
|
||||
really of reference type. We put this on the refs field
|
||||
of classdef, so that it can be appended to the C++
|
||||
|
|
|
@ -2039,7 +2039,7 @@ powerpc_mangle_relocs (bfd *outbfd, asection *insec,
|
|||
file. */
|
||||
|
||||
static char *
|
||||
link_inputs (struct string_list *inputs, char *ld, char * map_file)
|
||||
link_inputs (struct string_list *inputs, char *ld, char * mfile)
|
||||
{
|
||||
size_t c;
|
||||
struct string_list *q;
|
||||
|
@ -2088,12 +2088,12 @@ link_inputs (struct string_list *inputs, char *ld, char * map_file)
|
|||
argv[3] = unlink_on_exit;
|
||||
/* If we have been given the name of a mapfile and that
|
||||
name is not 'stderr' then pass it on to the linker. */
|
||||
if (map_file
|
||||
&& * map_file
|
||||
&& strcmp (map_file, "stderr") == 0)
|
||||
if (mfile
|
||||
&& * mfile
|
||||
&& strcmp (mfile, "stderr") == 0)
|
||||
{
|
||||
argv[4] = (char *) "-Map";
|
||||
argv[5] = map_file;
|
||||
argv[5] = mfile;
|
||||
i = 6;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -343,11 +343,11 @@ get_symbol_type (unsigned int type)
|
|||
}
|
||||
}
|
||||
|
||||
/* Print symbol name NAME, read from ABFD, with printf format FORMAT,
|
||||
/* Print symbol name NAME, read from ABFD, with printf format FORM,
|
||||
demangling it if requested. */
|
||||
|
||||
static void
|
||||
print_symname (const char *format, const char *name, bfd *abfd)
|
||||
print_symname (const char *form, const char *name, bfd *abfd)
|
||||
{
|
||||
if (do_demangle && *name)
|
||||
{
|
||||
|
@ -355,13 +355,13 @@ print_symname (const char *format, const char *name, bfd *abfd)
|
|||
|
||||
if (res != NULL)
|
||||
{
|
||||
printf (format, res);
|
||||
printf (form, res);
|
||||
free (res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
printf (format, name);
|
||||
printf (form, name);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -397,7 +397,7 @@ print_symdef_entry (bfd *abfd)
|
|||
Return the number of symbols to be printed. */
|
||||
|
||||
static long
|
||||
filter_symbols (bfd *abfd, bfd_boolean dynamic, void *minisyms,
|
||||
filter_symbols (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
|
||||
long symcount, unsigned int size)
|
||||
{
|
||||
bfd_byte *from, *fromend, *to;
|
||||
|
@ -418,7 +418,7 @@ filter_symbols (bfd *abfd, bfd_boolean dynamic, void *minisyms,
|
|||
|
||||
PROGRESS (1);
|
||||
|
||||
sym = bfd_minisymbol_to_symbol (abfd, dynamic, (const void *) from, store);
|
||||
sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, (const void *) from, store);
|
||||
if (sym == NULL)
|
||||
bfd_fatal (bfd_get_filename (abfd));
|
||||
|
||||
|
@ -659,7 +659,7 @@ size_forward2 (const void *P_x, const void *P_y)
|
|||
size. */
|
||||
|
||||
static long
|
||||
sort_symbols_by_size (bfd *abfd, bfd_boolean dynamic, void *minisyms,
|
||||
sort_symbols_by_size (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
|
||||
long symcount, unsigned int size,
|
||||
struct size_sym **symsizesp)
|
||||
{
|
||||
|
@ -686,7 +686,7 @@ sort_symbols_by_size (bfd *abfd, bfd_boolean dynamic, void *minisyms,
|
|||
|
||||
if (from < fromend)
|
||||
{
|
||||
sym = bfd_minisymbol_to_symbol (abfd, dynamic, (const void *) from,
|
||||
sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, (const void *) from,
|
||||
store_sym);
|
||||
if (sym == NULL)
|
||||
bfd_fatal (bfd_get_filename (abfd));
|
||||
|
@ -702,7 +702,7 @@ sort_symbols_by_size (bfd *abfd, bfd_boolean dynamic, void *minisyms,
|
|||
if (from + size < fromend)
|
||||
{
|
||||
next = bfd_minisymbol_to_symbol (abfd,
|
||||
dynamic,
|
||||
is_dynamic,
|
||||
(const void *) (from + size),
|
||||
store_next);
|
||||
if (next == NULL)
|
||||
|
@ -861,7 +861,7 @@ print_symbol (bfd *abfd, asymbol *sym, bfd_vma ssize, bfd *archive_bfd)
|
|||
|
||||
if (relocs == NULL)
|
||||
{
|
||||
struct get_relocs_info info;
|
||||
struct get_relocs_info rinfo;
|
||||
|
||||
seccount = bfd_count_sections (abfd);
|
||||
|
||||
|
@ -869,11 +869,11 @@ print_symbol (bfd *abfd, asymbol *sym, bfd_vma ssize, bfd *archive_bfd)
|
|||
relocs = (arelent ***) xmalloc (seccount * sizeof *relocs);
|
||||
relcount = (long *) xmalloc (seccount * sizeof *relcount);
|
||||
|
||||
info.secs = secs;
|
||||
info.relocs = relocs;
|
||||
info.relcount = relcount;
|
||||
info.syms = syms;
|
||||
bfd_map_over_sections (abfd, get_relocs, (void *) &info);
|
||||
rinfo.secs = secs;
|
||||
rinfo.relocs = relocs;
|
||||
rinfo.relcount = relcount;
|
||||
rinfo.syms = syms;
|
||||
bfd_map_over_sections (abfd, get_relocs, (void *) &rinfo);
|
||||
lineno_cache_rel_bfd = abfd;
|
||||
}
|
||||
|
||||
|
@ -923,7 +923,7 @@ print_symbol (bfd *abfd, asymbol *sym, bfd_vma ssize, bfd *archive_bfd)
|
|||
/* Print the symbols when sorting by size. */
|
||||
|
||||
static void
|
||||
print_size_symbols (bfd *abfd, bfd_boolean dynamic,
|
||||
print_size_symbols (bfd *abfd, bfd_boolean is_dynamic,
|
||||
struct size_sym *symsizes, long symcount,
|
||||
bfd *archive_bfd)
|
||||
{
|
||||
|
@ -941,7 +941,7 @@ print_size_symbols (bfd *abfd, bfd_boolean dynamic,
|
|||
asymbol *sym;
|
||||
bfd_vma ssize;
|
||||
|
||||
sym = bfd_minisymbol_to_symbol (abfd, dynamic, from->minisym, store);
|
||||
sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, from->minisym, store);
|
||||
if (sym == NULL)
|
||||
bfd_fatal (bfd_get_filename (abfd));
|
||||
|
||||
|
@ -960,7 +960,7 @@ print_size_symbols (bfd *abfd, bfd_boolean dynamic,
|
|||
containing ABFD. */
|
||||
|
||||
static void
|
||||
print_symbols (bfd *abfd, bfd_boolean dynamic, void *minisyms, long symcount,
|
||||
print_symbols (bfd *abfd, bfd_boolean is_dynamic, void *minisyms, long symcount,
|
||||
unsigned int size, bfd *archive_bfd)
|
||||
{
|
||||
asymbol *store;
|
||||
|
@ -976,7 +976,7 @@ print_symbols (bfd *abfd, bfd_boolean dynamic, void *minisyms, long symcount,
|
|||
{
|
||||
asymbol *sym;
|
||||
|
||||
sym = bfd_minisymbol_to_symbol (abfd, dynamic, from, store);
|
||||
sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, from, store);
|
||||
if (sym == NULL)
|
||||
bfd_fatal (bfd_get_filename (abfd));
|
||||
|
||||
|
|
|
@ -2295,28 +2295,28 @@ static void
|
|||
add_section_rename (const char * old_name, const char * new_name,
|
||||
flagword flags)
|
||||
{
|
||||
section_rename * rename;
|
||||
section_rename * srename;
|
||||
|
||||
/* Check for conflicts first. */
|
||||
for (rename = section_rename_list; rename != NULL; rename = rename->next)
|
||||
if (strcmp (rename->old_name, old_name) == 0)
|
||||
for (srename = section_rename_list; srename != NULL; srename = srename->next)
|
||||
if (strcmp (srename->old_name, old_name) == 0)
|
||||
{
|
||||
/* Silently ignore duplicate definitions. */
|
||||
if (strcmp (rename->new_name, new_name) == 0
|
||||
&& rename->flags == flags)
|
||||
if (strcmp (srename->new_name, new_name) == 0
|
||||
&& srename->flags == flags)
|
||||
return;
|
||||
|
||||
fatal (_("Multiple renames of section %s"), old_name);
|
||||
}
|
||||
|
||||
rename = (section_rename *) xmalloc (sizeof (* rename));
|
||||
srename = (section_rename *) xmalloc (sizeof (* srename));
|
||||
|
||||
rename->old_name = old_name;
|
||||
rename->new_name = new_name;
|
||||
rename->flags = flags;
|
||||
rename->next = section_rename_list;
|
||||
srename->old_name = old_name;
|
||||
srename->new_name = new_name;
|
||||
srename->flags = flags;
|
||||
srename->next = section_rename_list;
|
||||
|
||||
section_rename_list = rename;
|
||||
section_rename_list = srename;
|
||||
}
|
||||
|
||||
/* Check the section rename list for a new name of the input section
|
||||
|
@ -2328,18 +2328,18 @@ find_section_rename (bfd * ibfd ATTRIBUTE_UNUSED, sec_ptr isection,
|
|||
flagword * returned_flags)
|
||||
{
|
||||
const char * old_name = bfd_section_name (ibfd, isection);
|
||||
section_rename * rename;
|
||||
section_rename * srename;
|
||||
|
||||
/* Default to using the flags of the input section. */
|
||||
* returned_flags = bfd_get_section_flags (ibfd, isection);
|
||||
|
||||
for (rename = section_rename_list; rename != NULL; rename = rename->next)
|
||||
if (strcmp (rename->old_name, old_name) == 0)
|
||||
for (srename = section_rename_list; srename != NULL; srename = srename->next)
|
||||
if (strcmp (srename->old_name, old_name) == 0)
|
||||
{
|
||||
if (rename->flags != (flagword) -1)
|
||||
* returned_flags = rename->flags;
|
||||
if (srename->flags != (flagword) -1)
|
||||
* returned_flags = srename->flags;
|
||||
|
||||
return rename->new_name;
|
||||
return srename->new_name;
|
||||
}
|
||||
|
||||
return old_name;
|
||||
|
|
|
@ -667,14 +667,14 @@ compare_relocs (const void *ap, const void *bp)
|
|||
If SKIP_ZEROES is TRUE, omit leading zeroes. */
|
||||
|
||||
static void
|
||||
objdump_print_value (bfd_vma vma, struct disassemble_info *info,
|
||||
objdump_print_value (bfd_vma vma, struct disassemble_info *inf,
|
||||
bfd_boolean skip_zeroes)
|
||||
{
|
||||
char buf[30];
|
||||
char *p;
|
||||
struct objdump_disasm_info *aux;
|
||||
|
||||
aux = (struct objdump_disasm_info *) info->application_data;
|
||||
aux = (struct objdump_disasm_info *) inf->application_data;
|
||||
bfd_sprintf_vma (aux->abfd, buf, vma);
|
||||
if (! skip_zeroes)
|
||||
p = buf;
|
||||
|
@ -685,13 +685,13 @@ objdump_print_value (bfd_vma vma, struct disassemble_info *info,
|
|||
if (*p == '\0')
|
||||
--p;
|
||||
}
|
||||
(*info->fprintf_func) (info->stream, "%s", p);
|
||||
(*inf->fprintf_func) (inf->stream, "%s", p);
|
||||
}
|
||||
|
||||
/* Print the name of a symbol. */
|
||||
|
||||
static void
|
||||
objdump_print_symname (bfd *abfd, struct disassemble_info *info,
|
||||
objdump_print_symname (bfd *abfd, struct disassemble_info *inf,
|
||||
asymbol *sym)
|
||||
{
|
||||
char *alloc;
|
||||
|
@ -707,8 +707,8 @@ objdump_print_symname (bfd *abfd, struct disassemble_info *info,
|
|||
name = alloc;
|
||||
}
|
||||
|
||||
if (info != NULL)
|
||||
(*info->fprintf_func) (info->stream, "%s", name);
|
||||
if (inf != NULL)
|
||||
(*inf->fprintf_func) (inf->stream, "%s", name);
|
||||
else
|
||||
printf ("%s", name);
|
||||
|
||||
|
@ -724,7 +724,7 @@ objdump_print_symname (bfd *abfd, struct disassemble_info *info,
|
|||
|
||||
static asymbol *
|
||||
find_symbol_for_address (bfd_vma vma,
|
||||
struct disassemble_info *info,
|
||||
struct disassemble_info *inf,
|
||||
long *place)
|
||||
{
|
||||
/* @@ Would it speed things up to cache the last two symbols returned,
|
||||
|
@ -734,7 +734,7 @@ find_symbol_for_address (bfd_vma vma,
|
|||
|
||||
/* Indices in `sorted_syms'. */
|
||||
long min = 0;
|
||||
long max = sorted_symcount;
|
||||
long max_count = sorted_symcount;
|
||||
long thisplace;
|
||||
struct objdump_disasm_info *aux;
|
||||
bfd *abfd;
|
||||
|
@ -745,22 +745,22 @@ find_symbol_for_address (bfd_vma vma,
|
|||
if (sorted_symcount < 1)
|
||||
return NULL;
|
||||
|
||||
aux = (struct objdump_disasm_info *) info->application_data;
|
||||
aux = (struct objdump_disasm_info *) inf->application_data;
|
||||
abfd = aux->abfd;
|
||||
sec = aux->sec;
|
||||
opb = info->octets_per_byte;
|
||||
opb = inf->octets_per_byte;
|
||||
|
||||
/* Perform a binary search looking for the closest symbol to the
|
||||
required value. We are searching the range (min, max]. */
|
||||
while (min + 1 < max)
|
||||
required value. We are searching the range (min, max_count]. */
|
||||
while (min + 1 < max_count)
|
||||
{
|
||||
asymbol *sym;
|
||||
|
||||
thisplace = (max + min) / 2;
|
||||
thisplace = (max_count + min) / 2;
|
||||
sym = sorted_syms[thisplace];
|
||||
|
||||
if (bfd_asymbol_value (sym) > vma)
|
||||
max = thisplace;
|
||||
max_count = thisplace;
|
||||
else if (bfd_asymbol_value (sym) < vma)
|
||||
min = thisplace;
|
||||
else
|
||||
|
@ -783,12 +783,12 @@ find_symbol_for_address (bfd_vma vma,
|
|||
with the same value, as can occur with overlays or zero size
|
||||
sections. */
|
||||
min = thisplace;
|
||||
while (min < max
|
||||
while (min < max_count
|
||||
&& (bfd_asymbol_value (sorted_syms[min])
|
||||
== bfd_asymbol_value (sorted_syms[thisplace])))
|
||||
{
|
||||
if (sorted_syms[min]->section == sec
|
||||
&& info->symbol_is_valid (sorted_syms[min], info))
|
||||
&& inf->symbol_is_valid (sorted_syms[min], inf))
|
||||
{
|
||||
thisplace = min;
|
||||
|
||||
|
@ -816,7 +816,7 @@ find_symbol_for_address (bfd_vma vma,
|
|||
&& vma < (bfd_get_section_vma (abfd, sec)
|
||||
+ bfd_section_size (abfd, sec) / opb)));
|
||||
if ((sorted_syms[thisplace]->section != sec && want_section)
|
||||
|| !info->symbol_is_valid (sorted_syms[thisplace], info))
|
||||
|| ! inf->symbol_is_valid (sorted_syms[thisplace], inf))
|
||||
{
|
||||
long i;
|
||||
long newplace = sorted_symcount;
|
||||
|
@ -824,7 +824,7 @@ find_symbol_for_address (bfd_vma vma,
|
|||
for (i = min - 1; i >= 0; i--)
|
||||
{
|
||||
if ((sorted_syms[i]->section == sec || !want_section)
|
||||
&& info->symbol_is_valid (sorted_syms[i], info))
|
||||
&& inf->symbol_is_valid (sorted_syms[i], inf))
|
||||
{
|
||||
if (newplace == sorted_symcount)
|
||||
newplace = i;
|
||||
|
@ -848,7 +848,7 @@ find_symbol_for_address (bfd_vma vma,
|
|||
for (i = thisplace + 1; i < sorted_symcount; i++)
|
||||
{
|
||||
if ((sorted_syms[i]->section == sec || !want_section)
|
||||
&& info->symbol_is_valid (sorted_syms[i], info))
|
||||
&& inf->symbol_is_valid (sorted_syms[i], inf))
|
||||
{
|
||||
thisplace = i;
|
||||
break;
|
||||
|
@ -857,7 +857,7 @@ find_symbol_for_address (bfd_vma vma,
|
|||
}
|
||||
|
||||
if ((sorted_syms[thisplace]->section != sec && want_section)
|
||||
|| !info->symbol_is_valid (sorted_syms[thisplace], info))
|
||||
|| ! inf->symbol_is_valid (sorted_syms[thisplace], inf))
|
||||
/* There is no suitable symbol. */
|
||||
return NULL;
|
||||
}
|
||||
|
@ -872,49 +872,49 @@ find_symbol_for_address (bfd_vma vma,
|
|||
|
||||
static void
|
||||
objdump_print_addr_with_sym (bfd *abfd, asection *sec, asymbol *sym,
|
||||
bfd_vma vma, struct disassemble_info *info,
|
||||
bfd_vma vma, struct disassemble_info *inf,
|
||||
bfd_boolean skip_zeroes)
|
||||
{
|
||||
objdump_print_value (vma, info, skip_zeroes);
|
||||
objdump_print_value (vma, inf, skip_zeroes);
|
||||
|
||||
if (sym == NULL)
|
||||
{
|
||||
bfd_vma secaddr;
|
||||
|
||||
(*info->fprintf_func) (info->stream, " <%s",
|
||||
bfd_get_section_name (abfd, sec));
|
||||
(*inf->fprintf_func) (inf->stream, " <%s",
|
||||
bfd_get_section_name (abfd, sec));
|
||||
secaddr = bfd_get_section_vma (abfd, sec);
|
||||
if (vma < secaddr)
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, "-0x");
|
||||
objdump_print_value (secaddr - vma, info, TRUE);
|
||||
(*inf->fprintf_func) (inf->stream, "-0x");
|
||||
objdump_print_value (secaddr - vma, inf, TRUE);
|
||||
}
|
||||
else if (vma > secaddr)
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, "+0x");
|
||||
objdump_print_value (vma - secaddr, info, TRUE);
|
||||
(*inf->fprintf_func) (inf->stream, "+0x");
|
||||
objdump_print_value (vma - secaddr, inf, TRUE);
|
||||
}
|
||||
(*info->fprintf_func) (info->stream, ">");
|
||||
(*inf->fprintf_func) (inf->stream, ">");
|
||||
}
|
||||
else
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, " <");
|
||||
objdump_print_symname (abfd, info, sym);
|
||||
(*inf->fprintf_func) (inf->stream, " <");
|
||||
objdump_print_symname (abfd, inf, sym);
|
||||
if (bfd_asymbol_value (sym) > vma)
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, "-0x");
|
||||
objdump_print_value (bfd_asymbol_value (sym) - vma, info, TRUE);
|
||||
(*inf->fprintf_func) (inf->stream, "-0x");
|
||||
objdump_print_value (bfd_asymbol_value (sym) - vma, inf, TRUE);
|
||||
}
|
||||
else if (vma > bfd_asymbol_value (sym))
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, "+0x");
|
||||
objdump_print_value (vma - bfd_asymbol_value (sym), info, TRUE);
|
||||
(*inf->fprintf_func) (inf->stream, "+0x");
|
||||
objdump_print_value (vma - bfd_asymbol_value (sym), inf, TRUE);
|
||||
}
|
||||
(*info->fprintf_func) (info->stream, ">");
|
||||
(*inf->fprintf_func) (inf->stream, ">");
|
||||
}
|
||||
|
||||
if (display_file_offsets)
|
||||
info->fprintf_func (info->stream, _(" (File Offset: 0x%lx)"),
|
||||
inf->fprintf_func (inf->stream, _(" (File Offset: 0x%lx)"),
|
||||
(long int)(sec->filepos + (vma - sec->vma)));
|
||||
}
|
||||
|
||||
|
@ -923,23 +923,23 @@ objdump_print_addr_with_sym (bfd *abfd, asection *sec, asymbol *sym,
|
|||
|
||||
static void
|
||||
objdump_print_addr (bfd_vma vma,
|
||||
struct disassemble_info *info,
|
||||
struct disassemble_info *inf,
|
||||
bfd_boolean skip_zeroes)
|
||||
{
|
||||
struct objdump_disasm_info *aux;
|
||||
asymbol *sym = NULL;
|
||||
bfd_boolean skip_find = FALSE;
|
||||
|
||||
aux = (struct objdump_disasm_info *) info->application_data;
|
||||
aux = (struct objdump_disasm_info *) inf->application_data;
|
||||
|
||||
if (sorted_symcount < 1)
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, "0x");
|
||||
objdump_print_value (vma, info, skip_zeroes);
|
||||
(*inf->fprintf_func) (inf->stream, "0x");
|
||||
objdump_print_value (vma, inf, skip_zeroes);
|
||||
|
||||
if (display_file_offsets)
|
||||
info->fprintf_func (info->stream, _(" (File Offset: 0x%lx)"),
|
||||
(long int)(aux->sec->filepos + (vma - aux->sec->vma)));
|
||||
inf->fprintf_func (inf->stream, _(" (File Offset: 0x%lx)"),
|
||||
(long int)(aux->sec->filepos + (vma - aux->sec->vma)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -957,9 +957,9 @@ objdump_print_addr (bfd_vma vma,
|
|||
}
|
||||
|
||||
if (!skip_find)
|
||||
sym = find_symbol_for_address (vma, info, NULL);
|
||||
sym = find_symbol_for_address (vma, inf, NULL);
|
||||
|
||||
objdump_print_addr_with_sym (aux->abfd, aux->sec, sym, vma, info,
|
||||
objdump_print_addr_with_sym (aux->abfd, aux->sec, sym, vma, inf,
|
||||
skip_zeroes);
|
||||
}
|
||||
|
||||
|
@ -967,19 +967,19 @@ objdump_print_addr (bfd_vma vma,
|
|||
routine. */
|
||||
|
||||
static void
|
||||
objdump_print_address (bfd_vma vma, struct disassemble_info *info)
|
||||
objdump_print_address (bfd_vma vma, struct disassemble_info *inf)
|
||||
{
|
||||
objdump_print_addr (vma, info, ! prefix_addresses);
|
||||
objdump_print_addr (vma, inf, ! prefix_addresses);
|
||||
}
|
||||
|
||||
/* Determine if the given address has a symbol associated with it. */
|
||||
|
||||
static int
|
||||
objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * info)
|
||||
objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * inf)
|
||||
{
|
||||
asymbol * sym;
|
||||
|
||||
sym = find_symbol_for_address (vma, info, NULL);
|
||||
sym = find_symbol_for_address (vma, inf, NULL);
|
||||
|
||||
return (sym != NULL && (bfd_asymbol_value (sym) == vma));
|
||||
}
|
||||
|
@ -1191,15 +1191,15 @@ update_source_path (const char *filename)
|
|||
/* Print a source file line. */
|
||||
|
||||
static void
|
||||
print_line (struct print_file_list *p, unsigned int line)
|
||||
print_line (struct print_file_list *p, unsigned int linenum)
|
||||
{
|
||||
const char *l;
|
||||
size_t len;
|
||||
|
||||
--line;
|
||||
if (line >= p->maxline)
|
||||
--linenum;
|
||||
if (linenum >= p->maxline)
|
||||
return;
|
||||
l = p->linemap [line];
|
||||
l = p->linemap [linenum];
|
||||
/* Test fwrite return value to quiet glibc warning. */
|
||||
len = strcspn (l, "\n\r");
|
||||
if (len == 0 || fwrite (l, len, 1, stdout) == 1)
|
||||
|
@ -1228,14 +1228,14 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
|
|||
{
|
||||
const char *filename;
|
||||
const char *functionname;
|
||||
unsigned int line;
|
||||
unsigned int linenumber;
|
||||
bfd_boolean reloc;
|
||||
|
||||
if (! with_line_numbers && ! with_source_code)
|
||||
return;
|
||||
|
||||
if (! bfd_find_nearest_line (abfd, section, syms, addr_offset, &filename,
|
||||
&functionname, &line))
|
||||
&functionname, &linenumber))
|
||||
return;
|
||||
|
||||
if (filename != NULL && *filename == '\0')
|
||||
|
@ -1287,13 +1287,13 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
|
|||
&& (prev_functionname == NULL
|
||||
|| strcmp (functionname, prev_functionname) != 0))
|
||||
printf ("%s():\n", functionname);
|
||||
if (line > 0 && line != prev_line)
|
||||
printf ("%s:%u\n", filename == NULL ? "???" : filename, line);
|
||||
if (linenumber > 0 && linenumber != prev_line)
|
||||
printf ("%s:%u\n", filename == NULL ? "???" : filename, linenumber);
|
||||
}
|
||||
|
||||
if (with_source_code
|
||||
&& filename != NULL
|
||||
&& line > 0)
|
||||
&& linenumber > 0)
|
||||
{
|
||||
struct print_file_list **pp, *p;
|
||||
unsigned l;
|
||||
|
@ -1310,20 +1310,20 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
|
|||
p = update_source_path (filename);
|
||||
}
|
||||
|
||||
if (p != NULL && line != p->last_line)
|
||||
if (p != NULL && linenumber != p->last_line)
|
||||
{
|
||||
if (file_start_context && p->first)
|
||||
l = 1;
|
||||
else
|
||||
{
|
||||
l = line - SHOW_PRECEDING_CONTEXT_LINES;
|
||||
if (l >= line)
|
||||
l = linenumber - SHOW_PRECEDING_CONTEXT_LINES;
|
||||
if (l >= linenumber)
|
||||
l = 1;
|
||||
if (p->last_line >= l && p->last_line <= line)
|
||||
if (p->last_line >= l && p->last_line <= linenumber)
|
||||
l = p->last_line + 1;
|
||||
}
|
||||
dump_lines (p, l, line);
|
||||
p->last_line = line;
|
||||
dump_lines (p, l, linenumber);
|
||||
p->last_line = linenumber;
|
||||
p->first = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1338,8 +1338,8 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
|
|||
strcpy (prev_functionname, functionname);
|
||||
}
|
||||
|
||||
if (line > 0 && line != prev_line)
|
||||
prev_line = line;
|
||||
if (linenumber > 0 && linenumber != prev_line)
|
||||
prev_line = linenumber;
|
||||
}
|
||||
|
||||
/* Pseudo FILE object for strings. */
|
||||
|
@ -1394,7 +1394,7 @@ objdump_sprintf (SFILE *f, const char *format, ...)
|
|||
/* Disassemble some data in memory between given values. */
|
||||
|
||||
static void
|
||||
disassemble_bytes (struct disassemble_info * info,
|
||||
disassemble_bytes (struct disassemble_info * inf,
|
||||
disassembler_ftype disassemble_fn,
|
||||
bfd_boolean insns,
|
||||
bfd_byte * data,
|
||||
|
@ -1410,13 +1410,13 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
bfd_boolean done_dot;
|
||||
int skip_addr_chars;
|
||||
bfd_vma addr_offset;
|
||||
unsigned int opb = info->octets_per_byte;
|
||||
unsigned int skip_zeroes = info->skip_zeroes;
|
||||
unsigned int skip_zeroes_at_end = info->skip_zeroes_at_end;
|
||||
unsigned int opb = inf->octets_per_byte;
|
||||
unsigned int skip_zeroes = inf->skip_zeroes;
|
||||
unsigned int skip_zeroes_at_end = inf->skip_zeroes_at_end;
|
||||
int octets = opb;
|
||||
SFILE sfile;
|
||||
|
||||
aux = (struct objdump_disasm_info *) info->application_data;
|
||||
aux = (struct objdump_disasm_info *) inf->application_data;
|
||||
section = aux->sec;
|
||||
|
||||
sfile.alloc = 120;
|
||||
|
@ -1452,7 +1452,7 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
skip_addr_chars = (skip_addr_chars - 1) & -4;
|
||||
}
|
||||
|
||||
info->insn_info_valid = 0;
|
||||
inf->insn_info_valid = 0;
|
||||
|
||||
done_dot = FALSE;
|
||||
addr_offset = start_offset;
|
||||
|
@ -1472,8 +1472,8 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
if (data[z] != 0)
|
||||
break;
|
||||
if (! disassemble_zeroes
|
||||
&& (info->insn_info_valid == 0
|
||||
|| info->branch_delay_insns == 0)
|
||||
&& (inf->insn_info_valid == 0
|
||||
|| inf->branch_delay_insns == 0)
|
||||
&& (z - addr_offset * opb >= skip_zeroes
|
||||
|| (z == stop_offset * opb &&
|
||||
z - addr_offset * opb < skip_zeroes_at_end)))
|
||||
|
@ -1523,7 +1523,7 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
else
|
||||
{
|
||||
aux->require_sec = TRUE;
|
||||
objdump_print_address (section->vma + addr_offset, info);
|
||||
objdump_print_address (section->vma + addr_offset, inf);
|
||||
aux->require_sec = FALSE;
|
||||
putchar (' ');
|
||||
}
|
||||
|
@ -1531,15 +1531,15 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
if (insns)
|
||||
{
|
||||
sfile.pos = 0;
|
||||
info->fprintf_func = (fprintf_ftype) objdump_sprintf;
|
||||
info->stream = &sfile;
|
||||
info->bytes_per_line = 0;
|
||||
info->bytes_per_chunk = 0;
|
||||
info->flags = disassemble_all ? DISASSEMBLE_DATA : 0;
|
||||
inf->fprintf_func = (fprintf_ftype) objdump_sprintf;
|
||||
inf->stream = &sfile;
|
||||
inf->bytes_per_line = 0;
|
||||
inf->bytes_per_chunk = 0;
|
||||
inf->flags = disassemble_all ? DISASSEMBLE_DATA : 0;
|
||||
if (machine)
|
||||
info->flags |= USER_SPECIFIED_MACHINE_TYPE;
|
||||
inf->flags |= USER_SPECIFIED_MACHINE_TYPE;
|
||||
|
||||
if (info->disassembler_needs_relocs
|
||||
if (inf->disassembler_needs_relocs
|
||||
&& (bfd_get_file_flags (aux->abfd) & EXEC_P) == 0
|
||||
&& (bfd_get_file_flags (aux->abfd) & DYNAMIC) == 0
|
||||
&& *relppp < relppend)
|
||||
|
@ -1566,18 +1566,18 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
|| (distance_to_rel > 0
|
||||
&& distance_to_rel < (bfd_signed_vma) (previous_octets/ opb)))
|
||||
{
|
||||
info->flags |= INSN_HAS_RELOC;
|
||||
inf->flags |= INSN_HAS_RELOC;
|
||||
aux->reloc = **relppp;
|
||||
}
|
||||
else
|
||||
aux->reloc = NULL;
|
||||
}
|
||||
|
||||
octets = (*disassemble_fn) (section->vma + addr_offset, info);
|
||||
info->fprintf_func = (fprintf_ftype) fprintf;
|
||||
info->stream = stdout;
|
||||
if (insn_width == 0 && info->bytes_per_line != 0)
|
||||
octets_per_line = info->bytes_per_line;
|
||||
octets = (*disassemble_fn) (section->vma + addr_offset, inf);
|
||||
inf->fprintf_func = (fprintf_ftype) fprintf;
|
||||
inf->stream = stdout;
|
||||
if (insn_width == 0 && inf->bytes_per_line != 0)
|
||||
octets_per_line = inf->bytes_per_line;
|
||||
if (octets < 0)
|
||||
{
|
||||
if (sfile.pos)
|
||||
|
@ -1615,8 +1615,8 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
if (pb > octets_per_line && ! prefix_addresses && ! wide_output)
|
||||
pb = octets_per_line;
|
||||
|
||||
if (info->bytes_per_chunk)
|
||||
bpc = info->bytes_per_chunk;
|
||||
if (inf->bytes_per_chunk)
|
||||
bpc = inf->bytes_per_chunk;
|
||||
else
|
||||
bpc = 1;
|
||||
|
||||
|
@ -1624,7 +1624,7 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
{
|
||||
int k;
|
||||
|
||||
if (bpc > 1 && info->display_endian == BFD_ENDIAN_LITTLE)
|
||||
if (bpc > 1 && inf->display_endian == BFD_ENDIAN_LITTLE)
|
||||
{
|
||||
for (k = bpc - 1; k >= 0; k--)
|
||||
printf ("%02x", (unsigned) data[j + k]);
|
||||
|
@ -1685,7 +1685,7 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
{
|
||||
int k;
|
||||
|
||||
if (bpc > 1 && info->display_endian == BFD_ENDIAN_LITTLE)
|
||||
if (bpc > 1 && inf->display_endian == BFD_ENDIAN_LITTLE)
|
||||
{
|
||||
for (k = bpc - 1; k >= 0; k--)
|
||||
printf ("%02x", (unsigned) data[j + k]);
|
||||
|
@ -1722,7 +1722,7 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
printf ("\t\t\t");
|
||||
|
||||
objdump_print_value (section->vma - rel_offset + q->address,
|
||||
info, TRUE);
|
||||
inf, TRUE);
|
||||
|
||||
if (q->howto == NULL)
|
||||
printf (": *unknown*\t");
|
||||
|
@ -1739,7 +1739,7 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
|
||||
sym_name = bfd_asymbol_name (*q->sym_ptr_ptr);
|
||||
if (sym_name != NULL && *sym_name != '\0')
|
||||
objdump_print_symname (aux->abfd, info, *q->sym_ptr_ptr);
|
||||
objdump_print_symname (aux->abfd, inf, *q->sym_ptr_ptr);
|
||||
else
|
||||
{
|
||||
asection *sym_sec;
|
||||
|
@ -1755,7 +1755,7 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
if (q->addend)
|
||||
{
|
||||
printf ("+0x");
|
||||
objdump_print_value (q->addend, info, TRUE);
|
||||
objdump_print_value (q->addend, inf, TRUE);
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
|
@ -1774,11 +1774,11 @@ disassemble_bytes (struct disassemble_info * info,
|
|||
}
|
||||
|
||||
static void
|
||||
disassemble_section (bfd *abfd, asection *section, void *info)
|
||||
disassemble_section (bfd *abfd, asection *section, void *inf)
|
||||
{
|
||||
const struct elf_backend_data * bed;
|
||||
bfd_vma sign_adjust = 0;
|
||||
struct disassemble_info * pinfo = (struct disassemble_info *) info;
|
||||
struct disassemble_info * pinfo = (struct disassemble_info *) inf;
|
||||
struct objdump_disasm_info * paux;
|
||||
unsigned int opb = pinfo->octets_per_byte;
|
||||
bfd_byte * data = NULL;
|
||||
|
@ -1888,7 +1888,7 @@ disassemble_section (bfd *abfd, asection *section, void *info)
|
|||
/* Find the nearest symbol forwards from our current position. */
|
||||
paux->require_sec = TRUE;
|
||||
sym = (asymbol *) find_symbol_for_address (section->vma + addr_offset,
|
||||
(struct disassemble_info *) info,
|
||||
(struct disassemble_info *) inf,
|
||||
&place);
|
||||
paux->require_sec = FALSE;
|
||||
|
||||
|
@ -2056,12 +2056,12 @@ disassemble_data (bfd *abfd)
|
|||
|
||||
if (machine != NULL)
|
||||
{
|
||||
const bfd_arch_info_type *info = bfd_scan_arch (machine);
|
||||
const bfd_arch_info_type *inf = bfd_scan_arch (machine);
|
||||
|
||||
if (info == NULL)
|
||||
if (inf == NULL)
|
||||
fatal (_("Can't use supplied machine %s"), machine);
|
||||
|
||||
abfd->arch_info = info;
|
||||
abfd->arch_info = inf;
|
||||
}
|
||||
|
||||
if (endian != BFD_ENDIAN_UNKNOWN)
|
||||
|
@ -2665,26 +2665,26 @@ static void
|
|||
dump_symbols (bfd *abfd ATTRIBUTE_UNUSED, bfd_boolean dynamic)
|
||||
{
|
||||
asymbol **current;
|
||||
long max;
|
||||
long max_count;
|
||||
long count;
|
||||
|
||||
if (dynamic)
|
||||
{
|
||||
current = dynsyms;
|
||||
max = dynsymcount;
|
||||
max_count = dynsymcount;
|
||||
printf ("DYNAMIC SYMBOL TABLE:\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
current = syms;
|
||||
max = symcount;
|
||||
max_count = symcount;
|
||||
printf ("SYMBOL TABLE:\n");
|
||||
}
|
||||
|
||||
if (max == 0)
|
||||
if (max_count == 0)
|
||||
printf (_("no symbols\n"));
|
||||
|
||||
for (count = 0; count < max; count++)
|
||||
for (count = 0; count < max_count; count++)
|
||||
{
|
||||
bfd *cur_bfd;
|
||||
|
||||
|
@ -2759,7 +2759,7 @@ dump_reloc_set (bfd *abfd, asection *sec, arelent **relpp, long relcount)
|
|||
{
|
||||
arelent *q = *p;
|
||||
const char *filename, *functionname;
|
||||
unsigned int line;
|
||||
unsigned int linenumber;
|
||||
const char *sym_name;
|
||||
const char *section_name;
|
||||
|
||||
|
@ -2773,7 +2773,7 @@ dump_reloc_set (bfd *abfd, asection *sec, arelent **relpp, long relcount)
|
|||
if (with_line_numbers
|
||||
&& sec != NULL
|
||||
&& bfd_find_nearest_line (abfd, sec, syms, q->address,
|
||||
&filename, &functionname, &line))
|
||||
&filename, &functionname, &linenumber))
|
||||
{
|
||||
if (functionname != NULL
|
||||
&& (last_functionname == NULL
|
||||
|
@ -2785,14 +2785,14 @@ dump_reloc_set (bfd *abfd, asection *sec, arelent **relpp, long relcount)
|
|||
last_functionname = xstrdup (functionname);
|
||||
}
|
||||
|
||||
if (line > 0
|
||||
&& (line != last_line
|
||||
if (linenumber > 0
|
||||
&& (linenumber != last_line
|
||||
|| (filename != NULL
|
||||
&& last_filename != NULL
|
||||
&& strcmp (filename, last_filename) != 0)))
|
||||
{
|
||||
printf ("%s:%u\n", filename == NULL ? "???" : filename, line);
|
||||
last_line = line;
|
||||
printf ("%s:%u\n", filename == NULL ? "???" : filename, linenumber);
|
||||
last_line = linenumber;
|
||||
if (last_filename != NULL)
|
||||
free (last_filename);
|
||||
if (filename == NULL)
|
||||
|
|
|
@ -1947,13 +1947,13 @@ translate_addresses (bfd *abfd, char *addr_hex, FILE *f, asymbol **syms)
|
|||
/* Start a new compilation unit. */
|
||||
|
||||
static bfd_boolean
|
||||
tg_start_compilation_unit (void * p, const char *filename ATTRIBUTE_UNUSED)
|
||||
tg_start_compilation_unit (void * p, const char *fname ATTRIBUTE_UNUSED)
|
||||
{
|
||||
struct pr_handle *info = (struct pr_handle *) p;
|
||||
|
||||
free (info->filename);
|
||||
/* Should it be relative? best way to do it here?. */
|
||||
info->filename = strdup (filename);
|
||||
info->filename = strdup (fname);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1961,13 +1961,13 @@ tg_start_compilation_unit (void * p, const char *filename ATTRIBUTE_UNUSED)
|
|||
/* Start a source file within a compilation unit. */
|
||||
|
||||
static bfd_boolean
|
||||
tg_start_source (void *p, const char *filename)
|
||||
tg_start_source (void *p, const char *fname)
|
||||
{
|
||||
struct pr_handle *info = (struct pr_handle *) p;
|
||||
|
||||
free (info->filename);
|
||||
/* Should it be relative? best way to do it here?. */
|
||||
info->filename = strdup (filename);
|
||||
info->filename = strdup (fname);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -2744,7 +2744,7 @@ tg_start_block (void *p, bfd_vma addr)
|
|||
/* Write out line number information. */
|
||||
|
||||
static bfd_boolean
|
||||
tg_lineno (void *p ATTRIBUTE_UNUSED, const char *filename ATTRIBUTE_UNUSED,
|
||||
tg_lineno (void *p ATTRIBUTE_UNUSED, const char *fname ATTRIBUTE_UNUSED,
|
||||
unsigned long lineno ATTRIBUTE_UNUSED,
|
||||
bfd_vma addr ATTRIBUTE_UNUSED)
|
||||
{
|
||||
|
|
|
@ -729,13 +729,13 @@ slurp_rela_relocs (FILE * file,
|
|||
little-endian symbol index followed by four
|
||||
individual byte fields. Reorder INFO
|
||||
accordingly. */
|
||||
bfd_vma info = relas[i].r_info;
|
||||
info = (((info & 0xffffffff) << 32)
|
||||
| ((info >> 56) & 0xff)
|
||||
| ((info >> 40) & 0xff00)
|
||||
| ((info >> 24) & 0xff0000)
|
||||
| ((info >> 8) & 0xff000000));
|
||||
relas[i].r_info = info;
|
||||
bfd_vma inf = relas[i].r_info;
|
||||
inf = (((inf & 0xffffffff) << 32)
|
||||
| ((inf >> 56) & 0xff)
|
||||
| ((inf >> 40) & 0xff00)
|
||||
| ((inf >> 24) & 0xff0000)
|
||||
| ((inf >> 8) & 0xff000000));
|
||||
relas[i].r_info = inf;
|
||||
}
|
||||
#endif /* BFD64 */
|
||||
}
|
||||
|
@ -825,13 +825,13 @@ slurp_rel_relocs (FILE * file,
|
|||
little-endian symbol index followed by four
|
||||
individual byte fields. Reorder INFO
|
||||
accordingly. */
|
||||
bfd_vma info = rels[i].r_info;
|
||||
info = (((info & 0xffffffff) << 32)
|
||||
| ((info >> 56) & 0xff)
|
||||
| ((info >> 40) & 0xff00)
|
||||
| ((info >> 24) & 0xff0000)
|
||||
| ((info >> 8) & 0xff000000));
|
||||
rels[i].r_info = info;
|
||||
bfd_vma inf = rels[i].r_info;
|
||||
inf = (((inf & 0xffffffff) << 32)
|
||||
| ((inf >> 56) & 0xff)
|
||||
| ((inf >> 40) & 0xff00)
|
||||
| ((inf >> 24) & 0xff0000)
|
||||
| ((inf >> 8) & 0xff000000));
|
||||
rels[i].r_info = inf;
|
||||
}
|
||||
#endif /* BFD64 */
|
||||
}
|
||||
|
@ -942,21 +942,21 @@ dump_relocations (FILE * file,
|
|||
{
|
||||
const char * rtype;
|
||||
bfd_vma offset;
|
||||
bfd_vma info;
|
||||
bfd_vma inf;
|
||||
bfd_vma symtab_index;
|
||||
bfd_vma type;
|
||||
|
||||
offset = rels[i].r_offset;
|
||||
info = rels[i].r_info;
|
||||
inf = rels[i].r_info;
|
||||
|
||||
type = get_reloc_type (info);
|
||||
symtab_index = get_reloc_symindex (info);
|
||||
type = get_reloc_type (inf);
|
||||
symtab_index = get_reloc_symindex (inf);
|
||||
|
||||
if (is_32bit_elf)
|
||||
{
|
||||
printf ("%8.8lx %8.8lx ",
|
||||
(unsigned long) offset & 0xffffffff,
|
||||
(unsigned long) info & 0xffffffff);
|
||||
(unsigned long) inf & 0xffffffff);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -964,18 +964,18 @@ dump_relocations (FILE * file,
|
|||
printf (do_wide
|
||||
? "%16.16lx %16.16lx "
|
||||
: "%12.12lx %12.12lx ",
|
||||
offset, info);
|
||||
offset, inf);
|
||||
#elif BFD_HOST_64BIT_LONG_LONG
|
||||
#ifndef __MSVCRT__
|
||||
printf (do_wide
|
||||
? "%16.16llx %16.16llx "
|
||||
: "%12.12llx %12.12llx ",
|
||||
offset, info);
|
||||
offset, inf);
|
||||
#else
|
||||
printf (do_wide
|
||||
? "%16.16I64x %16.16I64x "
|
||||
: "%12.12I64x %12.12I64x ",
|
||||
offset, info);
|
||||
offset, inf);
|
||||
#endif
|
||||
#else
|
||||
printf (do_wide
|
||||
|
@ -983,8 +983,8 @@ dump_relocations (FILE * file,
|
|||
: "%4.4lx%8.8lx %4.4lx%8.8lx ",
|
||||
_bfd_int64_high (offset),
|
||||
_bfd_int64_low (offset),
|
||||
_bfd_int64_high (info),
|
||||
_bfd_int64_low (info));
|
||||
_bfd_int64_high (inf),
|
||||
_bfd_int64_low (inf));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1355,12 +1355,12 @@ dump_relocations (FILE * file,
|
|||
|
||||
if (is_rela)
|
||||
{
|
||||
long offset = (long) (bfd_signed_vma) rels[i].r_addend;
|
||||
long off = (long) (bfd_signed_vma) rels[i].r_addend;
|
||||
|
||||
if (offset < 0)
|
||||
printf (" - %lx", - offset);
|
||||
if (off < 0)
|
||||
printf (" - %lx", - off);
|
||||
else
|
||||
printf (" + %lx", offset);
|
||||
printf (" + %lx", off);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1374,15 +1374,15 @@ dump_relocations (FILE * file,
|
|||
if (elf_header.e_machine == EM_SPARCV9
|
||||
&& rtype != NULL
|
||||
&& streq (rtype, "R_SPARC_OLO10"))
|
||||
printf (" + %lx", (unsigned long) ELF64_R_TYPE_DATA (info));
|
||||
printf (" + %lx", (unsigned long) ELF64_R_TYPE_DATA (inf));
|
||||
|
||||
putchar ('\n');
|
||||
|
||||
#ifdef BFD64
|
||||
if (! is_32bit_elf && elf_header.e_machine == EM_MIPS)
|
||||
{
|
||||
bfd_vma type2 = ELF64_MIPS_R_TYPE2 (info);
|
||||
bfd_vma type3 = ELF64_MIPS_R_TYPE3 (info);
|
||||
bfd_vma type2 = ELF64_MIPS_R_TYPE2 (inf);
|
||||
bfd_vma type3 = ELF64_MIPS_R_TYPE3 (inf);
|
||||
const char * rtype2 = elf_mips_reloc_type (type2);
|
||||
const char * rtype3 = elf_mips_reloc_type (type3);
|
||||
|
||||
|
@ -3368,7 +3368,7 @@ process_file_header (void)
|
|||
|
||||
|
||||
static int
|
||||
get_32bit_program_headers (FILE * file, Elf_Internal_Phdr * program_headers)
|
||||
get_32bit_program_headers (FILE * file, Elf_Internal_Phdr * pheaders)
|
||||
{
|
||||
Elf32_External_Phdr * phdrs;
|
||||
Elf32_External_Phdr * external;
|
||||
|
@ -3382,7 +3382,7 @@ get_32bit_program_headers (FILE * file, Elf_Internal_Phdr * program_headers)
|
|||
if (!phdrs)
|
||||
return 0;
|
||||
|
||||
for (i = 0, internal = program_headers, external = phdrs;
|
||||
for (i = 0, internal = pheaders, external = phdrs;
|
||||
i < elf_header.e_phnum;
|
||||
i++, internal++, external++)
|
||||
{
|
||||
|
@ -3402,7 +3402,7 @@ get_32bit_program_headers (FILE * file, Elf_Internal_Phdr * program_headers)
|
|||
}
|
||||
|
||||
static int
|
||||
get_64bit_program_headers (FILE * file, Elf_Internal_Phdr * program_headers)
|
||||
get_64bit_program_headers (FILE * file, Elf_Internal_Phdr * pheaders)
|
||||
{
|
||||
Elf64_External_Phdr * phdrs;
|
||||
Elf64_External_Phdr * external;
|
||||
|
@ -3416,7 +3416,7 @@ get_64bit_program_headers (FILE * file, Elf_Internal_Phdr * program_headers)
|
|||
if (!phdrs)
|
||||
return 0;
|
||||
|
||||
for (i = 0, internal = program_headers, external = phdrs;
|
||||
for (i = 0, internal = pheaders, external = phdrs;
|
||||
i < elf_header.e_phnum;
|
||||
i++, internal++, external++)
|
||||
{
|
||||
|
@ -3959,7 +3959,8 @@ get_elf_section_flags (bfd_vma sh_flags)
|
|||
static char buff[1024];
|
||||
char * p = buff;
|
||||
int field_size = is_32bit_elf ? 8 : 16;
|
||||
int index, size = sizeof (buff) - (field_size + 4 + 1);
|
||||
int sindex;
|
||||
int size = sizeof (buff) - (field_size + 4 + 1);
|
||||
bfd_vma os_flags = 0;
|
||||
bfd_vma proc_flags = 0;
|
||||
bfd_vma unknown_flags = 0;
|
||||
|
@ -4013,36 +4014,36 @@ get_elf_section_flags (bfd_vma sh_flags)
|
|||
{
|
||||
switch (flag)
|
||||
{
|
||||
case SHF_WRITE: index = 0; break;
|
||||
case SHF_ALLOC: index = 1; break;
|
||||
case SHF_EXECINSTR: index = 2; break;
|
||||
case SHF_MERGE: index = 3; break;
|
||||
case SHF_STRINGS: index = 4; break;
|
||||
case SHF_INFO_LINK: index = 5; break;
|
||||
case SHF_LINK_ORDER: index = 6; break;
|
||||
case SHF_OS_NONCONFORMING: index = 7; break;
|
||||
case SHF_GROUP: index = 8; break;
|
||||
case SHF_TLS: index = 9; break;
|
||||
case SHF_WRITE: sindex = 0; break;
|
||||
case SHF_ALLOC: sindex = 1; break;
|
||||
case SHF_EXECINSTR: sindex = 2; break;
|
||||
case SHF_MERGE: sindex = 3; break;
|
||||
case SHF_STRINGS: sindex = 4; break;
|
||||
case SHF_INFO_LINK: sindex = 5; break;
|
||||
case SHF_LINK_ORDER: sindex = 6; break;
|
||||
case SHF_OS_NONCONFORMING: sindex = 7; break;
|
||||
case SHF_GROUP: sindex = 8; break;
|
||||
case SHF_TLS: sindex = 9; break;
|
||||
|
||||
default:
|
||||
index = -1;
|
||||
sindex = -1;
|
||||
switch (elf_header.e_machine)
|
||||
{
|
||||
case EM_IA_64:
|
||||
if (flag == SHF_IA_64_SHORT)
|
||||
index = 10;
|
||||
sindex = 10;
|
||||
else if (flag == SHF_IA_64_NORECOV)
|
||||
index = 11;
|
||||
sindex = 11;
|
||||
#ifdef BFD64
|
||||
else if (elf_header.e_ident[EI_OSABI] == ELFOSABI_OPENVMS)
|
||||
switch (flag)
|
||||
{
|
||||
case SHF_IA_64_VMS_GLOBAL: index = 12; break;
|
||||
case SHF_IA_64_VMS_OVERLAID: index = 13; break;
|
||||
case SHF_IA_64_VMS_SHARED: index = 14; break;
|
||||
case SHF_IA_64_VMS_VECTOR: index = 15; break;
|
||||
case SHF_IA_64_VMS_ALLOC_64BIT: index = 16; break;
|
||||
case SHF_IA_64_VMS_PROTECTED: index = 17; break;
|
||||
case SHF_IA_64_VMS_GLOBAL: sindex = 12; break;
|
||||
case SHF_IA_64_VMS_OVERLAID: sindex = 13; break;
|
||||
case SHF_IA_64_VMS_SHARED: sindex = 14; break;
|
||||
case SHF_IA_64_VMS_VECTOR: sindex = 15; break;
|
||||
case SHF_IA_64_VMS_ALLOC_64BIT: sindex = 16; break;
|
||||
case SHF_IA_64_VMS_PROTECTED: sindex = 17; break;
|
||||
default: break;
|
||||
}
|
||||
#endif
|
||||
|
@ -4056,16 +4057,16 @@ get_elf_section_flags (bfd_vma sh_flags)
|
|||
case EM_SPARCV9:
|
||||
case EM_SPARC:
|
||||
if (flag == SHF_EXCLUDE)
|
||||
index = 18;
|
||||
sindex = 18;
|
||||
else if (flag == SHF_ORDERED)
|
||||
index = 19;
|
||||
sindex = 19;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (index != -1)
|
||||
if (sindex != -1)
|
||||
{
|
||||
if (p != buff + field_size + 4)
|
||||
{
|
||||
|
@ -4076,8 +4077,8 @@ get_elf_section_flags (bfd_vma sh_flags)
|
|||
*p++ = ' ';
|
||||
}
|
||||
|
||||
size -= flags [index].len;
|
||||
p = stpcpy (p, flags [index].str);
|
||||
size -= flags [sindex].len;
|
||||
p = stpcpy (p, flags [sindex].str);
|
||||
}
|
||||
else if (flag & SHF_MASKOS)
|
||||
os_flags |= flag;
|
||||
|
@ -5804,8 +5805,8 @@ dynamic_section_mips_val (Elf_Internal_Dyn * entry)
|
|||
char timebuf[20];
|
||||
struct tm * tmp;
|
||||
|
||||
time_t time = entry->d_un.d_val;
|
||||
tmp = gmtime (&time);
|
||||
time_t atime = entry->d_un.d_val;
|
||||
tmp = gmtime (&atime);
|
||||
snprintf (timebuf, sizeof (timebuf), "%04u-%02u-%02uT%02u:%02u:%02u",
|
||||
tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
|
||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
||||
|
@ -6559,9 +6560,9 @@ process_dynamic_section (FILE * file)
|
|||
if (do_dynamic)
|
||||
{
|
||||
struct tm * tmp;
|
||||
time_t time = entry->d_un.d_val;
|
||||
time_t atime = entry->d_un.d_val;
|
||||
|
||||
tmp = gmtime (&time);
|
||||
tmp = gmtime (&atime);
|
||||
printf ("%04u-%02u-%02uT%02u:%02u:%02u\n",
|
||||
tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
|
||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
||||
|
@ -7722,9 +7723,9 @@ process_symbol_table (FILE * file)
|
|||
Elf_Internal_Verdef ivd;
|
||||
Elf_Internal_Verdaux ivda;
|
||||
Elf_External_Verdaux evda;
|
||||
unsigned long offset;
|
||||
unsigned long off;
|
||||
|
||||
offset = offset_from_vma
|
||||
off = offset_from_vma
|
||||
(file,
|
||||
version_info[DT_VERSIONTAGIDX (DT_VERDEF)],
|
||||
sizeof (Elf_External_Verdef));
|
||||
|
@ -7733,22 +7734,22 @@ process_symbol_table (FILE * file)
|
|||
{
|
||||
Elf_External_Verdef evd;
|
||||
|
||||
get_data (&evd, file, offset, sizeof (evd),
|
||||
get_data (&evd, file, off, sizeof (evd),
|
||||
1, _("version def"));
|
||||
|
||||
ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
|
||||
ivd.vd_aux = BYTE_GET (evd.vd_aux);
|
||||
ivd.vd_next = BYTE_GET (evd.vd_next);
|
||||
|
||||
offset += ivd.vd_next;
|
||||
off += ivd.vd_next;
|
||||
}
|
||||
while (ivd.vd_ndx != (vers_data & VERSYM_VERSION)
|
||||
&& ivd.vd_next != 0);
|
||||
|
||||
offset -= ivd.vd_next;
|
||||
offset += ivd.vd_aux;
|
||||
off -= ivd.vd_next;
|
||||
off += ivd.vd_aux;
|
||||
|
||||
get_data (&evda, file, offset, sizeof (evda),
|
||||
get_data (&evda, file, off, sizeof (evda),
|
||||
1, _("version def aux"));
|
||||
|
||||
ivda.vda_name = BYTE_GET (evda.vda_name);
|
||||
|
@ -8445,7 +8446,7 @@ apply_relocations (void * file,
|
|||
bfd_vma addend;
|
||||
unsigned int reloc_type;
|
||||
unsigned int reloc_size;
|
||||
unsigned char * loc;
|
||||
unsigned char * rloc;
|
||||
|
||||
reloc_type = get_reloc_type (rp->r_info);
|
||||
|
||||
|
@ -8470,8 +8471,8 @@ apply_relocations (void * file,
|
|||
continue;
|
||||
}
|
||||
|
||||
loc = start + rp->r_offset;
|
||||
if ((loc + reloc_size) > end)
|
||||
rloc = start + rp->r_offset;
|
||||
if ((rloc + reloc_size) > end)
|
||||
{
|
||||
warn (_("skipping invalid relocation offset 0x%lx in section %s\n"),
|
||||
(unsigned long) rp->r_offset,
|
||||
|
@ -8514,7 +8515,7 @@ apply_relocations (void * file,
|
|||
|| ((elf_header.e_machine == EM_PJ
|
||||
|| elf_header.e_machine == EM_PJ_OLD)
|
||||
&& reloc_type == 1))
|
||||
addend += byte_get (loc, reloc_size);
|
||||
addend += byte_get (rloc, reloc_size);
|
||||
|
||||
if (is_32bit_pcrel_reloc (reloc_type)
|
||||
|| is_64bit_pcrel_reloc (reloc_type))
|
||||
|
@ -8522,11 +8523,11 @@ apply_relocations (void * file,
|
|||
/* On HPPA, all pc-relative relocations are biased by 8. */
|
||||
if (elf_header.e_machine == EM_PARISC)
|
||||
addend -= 8;
|
||||
byte_put (loc, (addend + sym->st_value) - rp->r_offset,
|
||||
byte_put (rloc, (addend + sym->st_value) - rp->r_offset,
|
||||
reloc_size);
|
||||
}
|
||||
else
|
||||
byte_put (loc, addend + sym->st_value, reloc_size);
|
||||
byte_put (rloc, addend + sym->st_value, reloc_size);
|
||||
}
|
||||
|
||||
free (symtab);
|
||||
|
@ -9585,10 +9586,10 @@ process_attributes (FILE * file,
|
|||
do_numlist:
|
||||
for (;;)
|
||||
{
|
||||
unsigned int i;
|
||||
unsigned int j;
|
||||
|
||||
val = read_uleb128 (p, &i);
|
||||
p += i;
|
||||
val = read_uleb128 (p, &j);
|
||||
p += j;
|
||||
if (val == 0)
|
||||
break;
|
||||
printf (" %d", val);
|
||||
|
@ -9787,17 +9788,17 @@ process_mips_specific (FILE * file)
|
|||
for (cnt = 0; cnt < liblistno; ++cnt)
|
||||
{
|
||||
Elf32_Lib liblist;
|
||||
time_t time;
|
||||
time_t atime;
|
||||
char timebuf[20];
|
||||
struct tm * tmp;
|
||||
|
||||
liblist.l_name = BYTE_GET (elib[cnt].l_name);
|
||||
time = BYTE_GET (elib[cnt].l_time_stamp);
|
||||
atime = BYTE_GET (elib[cnt].l_time_stamp);
|
||||
liblist.l_checksum = BYTE_GET (elib[cnt].l_checksum);
|
||||
liblist.l_version = BYTE_GET (elib[cnt].l_version);
|
||||
liblist.l_flags = BYTE_GET (elib[cnt].l_flags);
|
||||
|
||||
tmp = gmtime (&time);
|
||||
tmp = gmtime (&atime);
|
||||
snprintf (timebuf, sizeof (timebuf),
|
||||
"%04u-%02u-%02uT%02u:%02u:%02u",
|
||||
tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
|
||||
|
@ -10120,12 +10121,12 @@ process_mips_specific (FILE * file)
|
|||
|
||||
if (pltgot != 0 && local_gotno != 0)
|
||||
{
|
||||
bfd_vma entry, local_end, global_end;
|
||||
bfd_vma ent, local_end, global_end;
|
||||
size_t i, offset;
|
||||
unsigned char * data;
|
||||
int addr_size;
|
||||
|
||||
entry = pltgot;
|
||||
ent = pltgot;
|
||||
addr_size = (is_32bit_elf ? 4 : 8);
|
||||
local_end = pltgot + local_gotno * addr_size;
|
||||
global_end = local_end + (symtabno - gotsym) * addr_size;
|
||||
|
@ -10142,26 +10143,26 @@ process_mips_specific (FILE * file)
|
|||
printf (_(" %*s %10s %*s Purpose\n"),
|
||||
addr_size * 2, "Address", "Access",
|
||||
addr_size * 2, "Initial");
|
||||
entry = print_mips_got_entry (data, pltgot, entry);
|
||||
ent = print_mips_got_entry (data, pltgot, ent);
|
||||
printf (" Lazy resolver\n");
|
||||
if (data
|
||||
&& (byte_get (data + entry - pltgot, addr_size)
|
||||
&& (byte_get (data + ent - pltgot, addr_size)
|
||||
>> (addr_size * 8 - 1)) != 0)
|
||||
{
|
||||
entry = print_mips_got_entry (data, pltgot, entry);
|
||||
ent = print_mips_got_entry (data, pltgot, ent);
|
||||
printf (" Module pointer (GNU extension)\n");
|
||||
}
|
||||
printf ("\n");
|
||||
|
||||
if (entry < local_end)
|
||||
if (ent < local_end)
|
||||
{
|
||||
printf (_(" Local entries:\n"));
|
||||
printf (_(" %*s %10s %*s\n"),
|
||||
addr_size * 2, "Address", "Access",
|
||||
addr_size * 2, "Initial");
|
||||
while (entry < local_end)
|
||||
while (ent < local_end)
|
||||
{
|
||||
entry = print_mips_got_entry (data, pltgot, entry);
|
||||
ent = print_mips_got_entry (data, pltgot, ent);
|
||||
printf ("\n");
|
||||
}
|
||||
printf ("\n");
|
||||
|
@ -10182,7 +10183,7 @@ process_mips_specific (FILE * file)
|
|||
Elf_Internal_Sym * psym;
|
||||
|
||||
psym = dynamic_symbols + i;
|
||||
entry = print_mips_got_entry (data, pltgot, entry);
|
||||
ent = print_mips_got_entry (data, pltgot, ent);
|
||||
printf (" ");
|
||||
print_vma (psym->st_value, LONG_HEX);
|
||||
printf (" %-7s %3s ",
|
||||
|
@ -10203,7 +10204,7 @@ process_mips_specific (FILE * file)
|
|||
|
||||
if (mips_pltgot != 0 && jmprel != 0 && pltrel != 0 && pltrelsz != 0)
|
||||
{
|
||||
bfd_vma entry, end;
|
||||
bfd_vma ent, end;
|
||||
size_t offset, rel_offset;
|
||||
unsigned long count, i;
|
||||
unsigned char * data;
|
||||
|
@ -10222,7 +10223,7 @@ process_mips_specific (FILE * file)
|
|||
return 0;
|
||||
}
|
||||
|
||||
entry = mips_pltgot;
|
||||
ent = mips_pltgot;
|
||||
addr_size = (is_32bit_elf ? 4 : 8);
|
||||
end = mips_pltgot + (2 + count) * addr_size;
|
||||
|
||||
|
@ -10233,9 +10234,9 @@ process_mips_specific (FILE * file)
|
|||
printf (_(" Reserved entries:\n"));
|
||||
printf (_(" %*s %*s Purpose\n"),
|
||||
addr_size * 2, "Address", addr_size * 2, "Initial");
|
||||
entry = print_mips_pltgot_entry (data, mips_pltgot, entry);
|
||||
ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
|
||||
printf (" PLT lazy resolver\n");
|
||||
entry = print_mips_pltgot_entry (data, mips_pltgot, entry);
|
||||
ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
|
||||
printf (" Module pointer\n");
|
||||
printf ("\n");
|
||||
|
||||
|
@ -10250,7 +10251,7 @@ process_mips_specific (FILE * file)
|
|||
Elf_Internal_Sym * psym;
|
||||
|
||||
psym = dynamic_symbols + get_reloc_symindex (rels[i].r_info);
|
||||
entry = print_mips_pltgot_entry (data, mips_pltgot, entry);
|
||||
ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
|
||||
printf (" ");
|
||||
print_vma (psym->st_value, LONG_HEX);
|
||||
printf (" %-7s %3s ",
|
||||
|
@ -10326,17 +10327,17 @@ process_gnu_liblist (FILE * file)
|
|||
++cnt)
|
||||
{
|
||||
Elf32_Lib liblist;
|
||||
time_t time;
|
||||
time_t atime;
|
||||
char timebuf[20];
|
||||
struct tm * tmp;
|
||||
|
||||
liblist.l_name = BYTE_GET (elib[cnt].l_name);
|
||||
time = BYTE_GET (elib[cnt].l_time_stamp);
|
||||
atime = BYTE_GET (elib[cnt].l_time_stamp);
|
||||
liblist.l_checksum = BYTE_GET (elib[cnt].l_checksum);
|
||||
liblist.l_version = BYTE_GET (elib[cnt].l_version);
|
||||
liblist.l_flags = BYTE_GET (elib[cnt].l_flags);
|
||||
|
||||
tmp = gmtime (&time);
|
||||
tmp = gmtime (&atime);
|
||||
snprintf (timebuf, sizeof (timebuf),
|
||||
"%04u-%02u-%02uT%02u:%02u:%02u",
|
||||
tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* resbin.c -- manipulate the Windows binary resource format.
|
||||
Copyright 1997, 1998, 1999, 2002, 2003, 2005, 2006, 2007
|
||||
Copyright 1997, 1998, 1999, 2002, 2003, 2005, 2006, 2007, 2009
|
||||
Free Software Foundation, Inc.
|
||||
Written by Ian Lance Taylor, Cygnus Support.
|
||||
Rewritten by Kai Tietz, Onevision.
|
||||
|
@ -227,7 +227,7 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
|
|||
{
|
||||
rc_res_resource *r;
|
||||
rc_menu *m;
|
||||
rc_uint_type version, read;
|
||||
rc_uint_type version, got;
|
||||
|
||||
r = (rc_res_resource *) res_alloc (sizeof *r);
|
||||
r->type = RES_TYPE_MENU;
|
||||
|
@ -245,7 +245,7 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
|
|||
if (length < 4)
|
||||
toosmall (_("menu header"));
|
||||
m->help = 0;
|
||||
m->items = bin_to_res_menuitems (wrbfd, data + 4, length - 4, &read);
|
||||
m->items = bin_to_res_menuitems (wrbfd, data + 4, length - 4, &got);
|
||||
}
|
||||
else if (version == 1)
|
||||
{
|
||||
|
@ -258,7 +258,7 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
|
|||
if (offset + 4 >= length)
|
||||
toosmall (_("menuex offset"));
|
||||
m->items = bin_to_res_menuexitems (wrbfd, data + 4 + offset,
|
||||
length - (4 + offset), &read);
|
||||
length - (4 + offset), &got);
|
||||
}
|
||||
else
|
||||
fatal (_("unsupported menu version %d"), (int) version);
|
||||
|
@ -270,14 +270,14 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
|
|||
|
||||
static rc_menuitem *
|
||||
bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
|
||||
rc_uint_type *read)
|
||||
rc_uint_type *got)
|
||||
{
|
||||
rc_menuitem *first, **pp;
|
||||
|
||||
first = NULL;
|
||||
pp = &first;
|
||||
|
||||
*read = 0;
|
||||
*got = 0;
|
||||
|
||||
while (length > 0)
|
||||
{
|
||||
|
@ -334,7 +334,7 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type len
|
|||
|
||||
data += itemlen;
|
||||
length -= itemlen;
|
||||
*read += itemlen;
|
||||
*got += itemlen;
|
||||
|
||||
if ((flags & MENUITEM_ENDMENU) != 0)
|
||||
return first;
|
||||
|
@ -347,14 +347,14 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type len
|
|||
|
||||
static rc_menuitem *
|
||||
bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
|
||||
rc_uint_type *read)
|
||||
rc_uint_type *got)
|
||||
{
|
||||
rc_menuitem *first, **pp;
|
||||
|
||||
first = NULL;
|
||||
pp = &first;
|
||||
|
||||
*read = 0;
|
||||
*got = 0;
|
||||
|
||||
while (length > 0)
|
||||
{
|
||||
|
@ -408,7 +408,7 @@ bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type l
|
|||
|
||||
data += itemlen;
|
||||
length -= itemlen;
|
||||
*read += itemlen;
|
||||
*got += itemlen;
|
||||
|
||||
if ((flags & 0x80) != 0)
|
||||
return first;
|
||||
|
|
|
@ -1926,7 +1926,7 @@ indent (FILE *e, int c)
|
|||
without the need to store it somewhere externally. */
|
||||
|
||||
void
|
||||
write_rc_file (const char *filename, const rc_res_directory *resources)
|
||||
write_rc_file (const char *filename, const rc_res_directory *res_dir)
|
||||
{
|
||||
FILE *e;
|
||||
rc_uint_type language;
|
||||
|
@ -1941,7 +1941,7 @@ write_rc_file (const char *filename, const rc_res_directory *resources)
|
|||
}
|
||||
|
||||
language = (rc_uint_type) ((bfd_signed_vma) -1);
|
||||
write_rc_directory (e, resources, (const rc_res_id *) NULL,
|
||||
write_rc_directory (e, res_dir, (const rc_res_id *) NULL,
|
||||
(const rc_res_id *) NULL, &language, 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -647,7 +647,7 @@ res_add_resource (rc_res_resource *r, const rc_res_id *type, const rc_res_id *id
|
|||
and modified to add an existing resource.
|
||||
*/
|
||||
static void
|
||||
res_append_resource (rc_res_directory **resources, rc_res_resource *resource,
|
||||
res_append_resource (rc_res_directory **res_dirs, rc_res_resource *resource,
|
||||
int cids, const rc_res_id *ids, int dupok)
|
||||
{
|
||||
rc_res_entry *re = NULL;
|
||||
|
@ -658,7 +658,7 @@ res_append_resource (rc_res_directory **resources, rc_res_resource *resource,
|
|||
{
|
||||
rc_res_entry **pp;
|
||||
|
||||
if (*resources == NULL)
|
||||
if (*res_dirs == NULL)
|
||||
{
|
||||
static unsigned long timeval;
|
||||
|
||||
|
@ -667,16 +667,16 @@ res_append_resource (rc_res_directory **resources, rc_res_resource *resource,
|
|||
if (timeval == 0)
|
||||
timeval = time (NULL);
|
||||
|
||||
*resources = ((rc_res_directory *)
|
||||
*res_dirs = ((rc_res_directory *)
|
||||
res_alloc (sizeof (rc_res_directory)));
|
||||
(*resources)->characteristics = 0;
|
||||
(*resources)->time = timeval;
|
||||
(*resources)->major = 0;
|
||||
(*resources)->minor = 0;
|
||||
(*resources)->entries = NULL;
|
||||
(*res_dirs)->characteristics = 0;
|
||||
(*res_dirs)->time = timeval;
|
||||
(*res_dirs)->major = 0;
|
||||
(*res_dirs)->minor = 0;
|
||||
(*res_dirs)->entries = NULL;
|
||||
}
|
||||
|
||||
for (pp = &(*resources)->entries; *pp != NULL; pp = &(*pp)->next)
|
||||
for (pp = &(*res_dirs)->entries; *pp != NULL; pp = &(*pp)->next)
|
||||
if (res_id_cmp ((*pp)->id, ids[i]) == 0)
|
||||
break;
|
||||
|
||||
|
@ -711,7 +711,7 @@ res_append_resource (rc_res_directory **resources, rc_res_resource *resource,
|
|||
xexit (1);
|
||||
}
|
||||
|
||||
resources = &re->u.dir;
|
||||
res_dirs = &re->u.dir;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* srconv.c -- Sysroff conversion program
|
||||
Copyright 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
2005, 2007, 2008 Free Software Foundation, Inc.
|
||||
2005, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
|
@ -158,17 +158,17 @@ strip_suffix (const char *name)
|
|||
|
||||
/* IT LEN stuff CS */
|
||||
static void
|
||||
checksum (FILE *file, unsigned char *ptr, int size, int code)
|
||||
checksum (FILE *ffile, unsigned char *ptr, int size, int ccode)
|
||||
{
|
||||
int j;
|
||||
int last;
|
||||
int sum = 0;
|
||||
int bytes = size / 8;
|
||||
|
||||
last = !(code & 0xff00);
|
||||
last = !(ccode & 0xff00);
|
||||
if (size & 0x7)
|
||||
abort ();
|
||||
ptr[0] = code | (last ? 0x80 : 0);
|
||||
ptr[0] = ccode | (last ? 0x80 : 0);
|
||||
ptr[1] = bytes + 1;
|
||||
|
||||
for (j = 0; j < bytes; j++)
|
||||
|
@ -176,14 +176,14 @@ checksum (FILE *file, unsigned char *ptr, int size, int code)
|
|||
|
||||
/* Glue on a checksum too. */
|
||||
ptr[bytes] = ~sum;
|
||||
if (fwrite (ptr, bytes + 1, 1, file) != 1)
|
||||
if (fwrite (ptr, bytes + 1, 1, ffile) != 1)
|
||||
/* FIXME: Return error status. */
|
||||
abort ();
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
writeINT (int n, unsigned char *ptr, int *idx, int size, FILE *file)
|
||||
writeINT (int n, unsigned char *ptr, int *idx, int size, FILE *ffile)
|
||||
{
|
||||
int byte = *idx / 8;
|
||||
|
||||
|
@ -195,7 +195,7 @@ writeINT (int n, unsigned char *ptr, int *idx, int size, FILE *file)
|
|||
if (byte > 240)
|
||||
{
|
||||
/* Lets write out that record and do another one. */
|
||||
checksum (file, ptr, *idx, code | 0x1000);
|
||||
checksum (ffile, ptr, *idx, code | 0x1000);
|
||||
*idx = 16;
|
||||
byte = *idx / 8;
|
||||
}
|
||||
|
@ -242,24 +242,24 @@ writeBITS (int val, unsigned char *ptr, int *idx, int size)
|
|||
|
||||
static void
|
||||
writeBARRAY (barray data, unsigned char *ptr, int *idx,
|
||||
int size ATTRIBUTE_UNUSED, FILE *file)
|
||||
int size ATTRIBUTE_UNUSED, FILE *ffile)
|
||||
{
|
||||
int i;
|
||||
|
||||
writeINT (data.len, ptr, idx, 1, file);
|
||||
writeINT (data.len, ptr, idx, 1, ffile);
|
||||
for (i = 0; i < data.len; i++)
|
||||
writeINT (data.data[i], ptr, idx, 1, file);
|
||||
writeINT (data.data[i], ptr, idx, 1, ffile);
|
||||
}
|
||||
|
||||
static void
|
||||
writeCHARS (char *string, unsigned char *ptr, int *idx, int size, FILE *file)
|
||||
writeCHARS (char *string, unsigned char *ptr, int *idx, int size, FILE *ffile)
|
||||
{
|
||||
int i = *idx / 8;
|
||||
|
||||
if (i > 240)
|
||||
{
|
||||
/* Lets write out that record and do another one. */
|
||||
checksum (file, ptr, *idx, code | 0x1000);
|
||||
checksum (ffile, ptr, *idx, code | 0x1000);
|
||||
*idx = 16;
|
||||
i = *idx / 8;
|
||||
}
|
||||
|
@ -1697,21 +1697,22 @@ align (int x)
|
|||
ordinary defs - dunno why, but thats what hitachi does with 'em. */
|
||||
|
||||
static void
|
||||
prescan (struct coff_ofile *tree)
|
||||
prescan (struct coff_ofile *otree)
|
||||
{
|
||||
struct coff_symbol *s;
|
||||
struct coff_section *common_section;
|
||||
|
||||
/* Find the common section - always section 3. */
|
||||
common_section = tree->sections + 3;
|
||||
common_section = otree->sections + 3;
|
||||
|
||||
for (s = tree->symbol_list_head;
|
||||
for (s = otree->symbol_list_head;
|
||||
s;
|
||||
s = s->next_in_ofile_list)
|
||||
{
|
||||
if (s->visible->type == coff_vis_common)
|
||||
{
|
||||
struct coff_where *w = s->where;
|
||||
|
||||
/* s->visible->type = coff_vis_ext_def; leave it as common */
|
||||
common_section->size = align (common_section->size);
|
||||
w->offset = common_section->size + common_section->address;
|
||||
|
@ -1725,11 +1726,11 @@ prescan (struct coff_ofile *tree)
|
|||
char *program_name;
|
||||
|
||||
static void
|
||||
show_usage (FILE *file, int status)
|
||||
show_usage (FILE *ffile, int status)
|
||||
{
|
||||
fprintf (file, _("Usage: %s [option(s)] in-file [out-file]\n"), program_name);
|
||||
fprintf (file, _("Convert a COFF object file into a SYSROFF object file\n"));
|
||||
fprintf (file, _(" The options are:\n\
|
||||
fprintf (ffile, _("Usage: %s [option(s)] in-file [out-file]\n"), program_name);
|
||||
fprintf (ffile, _("Convert a COFF object file into a SYSROFF object file\n"));
|
||||
fprintf (ffile, _(" The options are:\n\
|
||||
-q --quick (Obsolete - ignored)\n\
|
||||
-n --noprescan Do not perform a scan to convert commons into defs\n\
|
||||
-d --debug Display information about what is being done\n\
|
||||
|
@ -1738,7 +1739,7 @@ show_usage (FILE *file, int status)
|
|||
-v --version Print the program's version number\n"));
|
||||
|
||||
if (REPORT_BUGS_TO[0] && status == 0)
|
||||
fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
|
||||
fprintf (ffile, _("Report bugs to %s\n"), REPORT_BUGS_TO);
|
||||
exit (status);
|
||||
}
|
||||
|
||||
|
|
|
@ -3277,26 +3277,26 @@ static debug_type *
|
|||
stab_find_slot (struct stab_handle *info, const int *typenums)
|
||||
{
|
||||
int filenum;
|
||||
int index;
|
||||
int tindex;
|
||||
struct stab_types **ps;
|
||||
|
||||
filenum = typenums[0];
|
||||
index = typenums[1];
|
||||
tindex = typenums[1];
|
||||
|
||||
if (filenum < 0 || (unsigned int) filenum >= info->files)
|
||||
{
|
||||
fprintf (stderr, _("Type file number %d out of range\n"), filenum);
|
||||
return NULL;
|
||||
}
|
||||
if (index < 0)
|
||||
if (tindex < 0)
|
||||
{
|
||||
fprintf (stderr, _("Type index number %d out of range\n"), index);
|
||||
fprintf (stderr, _("Type index number %d out of range\n"), tindex);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ps = info->file_types + filenum;
|
||||
|
||||
while (index >= STAB_TYPES_SLOTS)
|
||||
while (tindex >= STAB_TYPES_SLOTS)
|
||||
{
|
||||
if (*ps == NULL)
|
||||
{
|
||||
|
@ -3304,7 +3304,7 @@ stab_find_slot (struct stab_handle *info, const int *typenums)
|
|||
memset (*ps, 0, sizeof **ps);
|
||||
}
|
||||
ps = &(*ps)->next;
|
||||
index -= STAB_TYPES_SLOTS;
|
||||
tindex -= STAB_TYPES_SLOTS;
|
||||
}
|
||||
if (*ps == NULL)
|
||||
{
|
||||
|
@ -3312,7 +3312,7 @@ stab_find_slot (struct stab_handle *info, const int *typenums)
|
|||
memset (*ps, 0, sizeof **ps);
|
||||
}
|
||||
|
||||
return (*ps)->types + index;
|
||||
return (*ps)->types + tindex;
|
||||
}
|
||||
|
||||
/* Find a type given a type number. If the type has not been
|
||||
|
|
|
@ -211,9 +211,9 @@ getBITS (unsigned char *ptr, int *idx, int size, int max)
|
|||
}
|
||||
|
||||
static void
|
||||
itheader (char *name, int code)
|
||||
itheader (char *name, int icode)
|
||||
{
|
||||
printf ("\n%s 0x%02x\n", name, code);
|
||||
printf ("\n%s 0x%02x\n", name, icode);
|
||||
}
|
||||
|
||||
static int indent;
|
||||
|
@ -641,16 +641,16 @@ module (void)
|
|||
char *program_name;
|
||||
|
||||
static void
|
||||
show_usage (FILE *file, int status)
|
||||
show_usage (FILE *ffile, int status)
|
||||
{
|
||||
fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name);
|
||||
fprintf (file, _("Print a human readable interpretation of a SYSROFF object file\n"));
|
||||
fprintf (file, _(" The options are:\n\
|
||||
fprintf (ffile, _("Usage: %s [option(s)] in-file\n"), program_name);
|
||||
fprintf (ffile, _("Print a human readable interpretation of a SYSROFF object file\n"));
|
||||
fprintf (ffile, _(" The options are:\n\
|
||||
-h --help Display this information\n\
|
||||
-v --version Print the program's version number\n"));
|
||||
|
||||
if (REPORT_BUGS_TO[0] && status == 0)
|
||||
fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
|
||||
fprintf (ffile, _("Report bugs to %s\n"), REPORT_BUGS_TO);
|
||||
exit (status);
|
||||
}
|
||||
|
||||
|
@ -658,7 +658,7 @@ int
|
|||
main (int ac, char **av)
|
||||
{
|
||||
char *input_file = NULL;
|
||||
int opt;
|
||||
int option;
|
||||
static struct option long_options[] =
|
||||
{
|
||||
{"help", no_argument, 0, 'h'},
|
||||
|
@ -680,9 +680,9 @@ main (int ac, char **av)
|
|||
|
||||
expandargv (&ac, &av);
|
||||
|
||||
while ((opt = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF)
|
||||
while ((option = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF)
|
||||
{
|
||||
switch (opt)
|
||||
switch (option)
|
||||
{
|
||||
case 'H':
|
||||
case 'h':
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright 2001, 2003, 2005, 2007 Free Software Foundation, Inc.
|
||||
/* Copyright 2001, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
|
||||
Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
|
||||
|
||||
This file is part of GNU binutils.
|
||||
|
@ -102,45 +102,39 @@ it:
|
|||
case 'd':
|
||||
printf("\n\n\n#define IT_%s_CODE 0x%x\n", it,code);
|
||||
printf("struct IT_%s;\n", it);
|
||||
printf("extern void sysroff_swap_%s_in PARAMS ((struct IT_%s *));\n",
|
||||
printf("extern void sysroff_swap_%s_in (struct IT_%s *);\n",
|
||||
$2, it);
|
||||
printf("extern void sysroff_swap_%s_out PARAMS ((FILE *, struct IT_%s *));\n",
|
||||
printf("extern void sysroff_swap_%s_out (FILE *, struct IT_%s *);\n",
|
||||
$2, it);
|
||||
printf("extern void sysroff_print_%s_out PARAMS ((struct IT_%s *));\n",
|
||||
printf("extern void sysroff_print_%s_out (struct IT_%s *);\n",
|
||||
$2, it);
|
||||
printf("struct IT_%s { \n", it);
|
||||
break;
|
||||
case 'i':
|
||||
printf("void sysroff_swap_%s_in(ptr)\n",$2);
|
||||
printf("struct IT_%s *ptr;\n", it);
|
||||
printf("{\n");
|
||||
printf("unsigned char raw[255];\n");
|
||||
printf("\tint idx = 0 ;\n");
|
||||
printf("\tint size;\n");
|
||||
printf("memset(raw,0,255);\n");
|
||||
printf("memset(ptr,0,sizeof(*ptr));\n");
|
||||
printf("size = fillup(raw);\n");
|
||||
break;
|
||||
case 'g':
|
||||
printf("void sysroff_swap_%s_out(file,ptr)\n",$2);
|
||||
printf("FILE * file;\n");
|
||||
printf("struct IT_%s *ptr;\n", it);
|
||||
printf("void sysroff_swap_%s_in (struct IT_%s * ptr)\n",$2,it);
|
||||
printf("{\n");
|
||||
printf("\tunsigned char raw[255];\n");
|
||||
printf("\tint idx = 16 ;\n");
|
||||
printf("\tint idx = 0;\n");
|
||||
printf("\tint size;\n");
|
||||
printf("\tmemset(raw,0,255);\n");
|
||||
printf("\tmemset(ptr,0,sizeof(*ptr));\n");
|
||||
printf("\tsize = fillup(raw);\n");
|
||||
break;
|
||||
case 'g':
|
||||
printf("void sysroff_swap_%s_out (FILE * ffile, struct IT_%s * ptr)\n",$2,it);
|
||||
printf("{\n");
|
||||
printf("\tunsigned char raw[255];\n");
|
||||
printf("\tint idx = 16;\n");
|
||||
printf("\tmemset (raw, 0, 255);\n");
|
||||
printf("\tcode = IT_%s_CODE;\n", it);
|
||||
break;
|
||||
case 'o':
|
||||
printf("void sysroff_swap_%s_out(abfd,ptr)\n",$2);
|
||||
printf("bfd * abfd;\n");
|
||||
printf("struct IT_%s *ptr;\n",it);
|
||||
printf("void sysroff_swap_%s_out (bfd * abfd, struct IT_%s * ptr)\n",$2, it);
|
||||
printf("{\n");
|
||||
printf("int idx = 0 ;\n");
|
||||
printf("\tint idx = 0;\n");
|
||||
break;
|
||||
case 'c':
|
||||
printf("void sysroff_print_%s_out(ptr)\n",$2);
|
||||
printf("struct IT_%s *ptr;\n", it);
|
||||
printf("void sysroff_print_%s_out (struct IT_%s *ptr)\n",$2,it);
|
||||
printf("{\n");
|
||||
printf("itheader(\"%s\", IT_%s_CODE);\n",$2,$2);
|
||||
break;
|
||||
|
@ -158,7 +152,7 @@ it:
|
|||
printf("};\n");
|
||||
break;
|
||||
case 'g':
|
||||
printf("\tchecksum(file,raw, idx, IT_%s_CODE);\n", it);
|
||||
printf("\tchecksum(ffile,raw, idx, IT_%s_CODE);\n", it);
|
||||
|
||||
case 'i':
|
||||
|
||||
|
@ -274,7 +268,7 @@ char *ptr = pnames[rdepth];
|
|||
|
||||
}
|
||||
else {
|
||||
printf("\twrite%s(ptr->%s%s,raw,&idx,%d,file);\n",
|
||||
printf("\twrite%s(ptr->%s%s,raw,&idx,%d,ffile);\n",
|
||||
type,
|
||||
id,
|
||||
names[rdepth],size/8);
|
||||
|
|
|
@ -394,13 +394,13 @@ stab_write_symbol (struct stab_write_handle *info, int type, int desc,
|
|||
|
||||
static bfd_boolean
|
||||
stab_push_string (struct stab_write_handle *info, const char *string,
|
||||
long index, bfd_boolean definition, unsigned int size)
|
||||
long tindex, bfd_boolean definition, unsigned int size)
|
||||
{
|
||||
struct stab_type_stack *s;
|
||||
|
||||
s = (struct stab_type_stack *) xmalloc (sizeof *s);
|
||||
s->string = xstrdup (string);
|
||||
s->index = index;
|
||||
s->index = tindex;
|
||||
s->definition = definition;
|
||||
s->size = size;
|
||||
|
||||
|
@ -418,13 +418,13 @@ stab_push_string (struct stab_write_handle *info, const char *string,
|
|||
/* Push a type index which has already been defined. */
|
||||
|
||||
static bfd_boolean
|
||||
stab_push_defined_type (struct stab_write_handle *info, long index,
|
||||
stab_push_defined_type (struct stab_write_handle *info, long tindex,
|
||||
unsigned int size)
|
||||
{
|
||||
char buf[20];
|
||||
|
||||
sprintf (buf, "%ld", index);
|
||||
return stab_push_string (info, buf, index, FALSE, size);
|
||||
sprintf (buf, "%ld", tindex);
|
||||
return stab_push_string (info, buf, tindex, FALSE, size);
|
||||
}
|
||||
|
||||
/* Pop a type off the type stack. The caller is responsible for
|
||||
|
@ -586,15 +586,15 @@ stab_empty_type (void *p)
|
|||
return stab_push_defined_type (info, info->type_cache.void_type, 0);
|
||||
else
|
||||
{
|
||||
long index;
|
||||
long tindex;
|
||||
char buf[40];
|
||||
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
|
||||
sprintf (buf, "%ld=%ld", index, index);
|
||||
sprintf (buf, "%ld=%ld", tindex, tindex);
|
||||
|
||||
return stab_push_string (info, buf, index, FALSE, 0);
|
||||
return stab_push_string (info, buf, tindex, FALSE, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -609,17 +609,17 @@ stab_void_type (void *p)
|
|||
return stab_push_defined_type (info, info->type_cache.void_type, 0);
|
||||
else
|
||||
{
|
||||
long index;
|
||||
long tindex;
|
||||
char buf[40];
|
||||
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
|
||||
info->type_cache.void_type = index;
|
||||
info->type_cache.void_type = tindex;
|
||||
|
||||
sprintf (buf, "%ld=%ld", index, index);
|
||||
sprintf (buf, "%ld=%ld", tindex, tindex);
|
||||
|
||||
return stab_push_string (info, buf, index, TRUE, 0);
|
||||
return stab_push_string (info, buf, tindex, TRUE, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -646,15 +646,15 @@ stab_int_type (void *p, unsigned int size, bfd_boolean unsignedp)
|
|||
return stab_push_defined_type (info, cache[size - 1], size);
|
||||
else
|
||||
{
|
||||
long index;
|
||||
long tindex;
|
||||
char buf[100];
|
||||
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
|
||||
cache[size - 1] = index;
|
||||
cache[size - 1] = tindex;
|
||||
|
||||
sprintf (buf, "%ld=r%ld;", index, index);
|
||||
sprintf (buf, "%ld=r%ld;", tindex, tindex);
|
||||
if (unsignedp)
|
||||
{
|
||||
strcat (buf, "0;");
|
||||
|
@ -679,7 +679,7 @@ stab_int_type (void *p, unsigned int size, bfd_boolean unsignedp)
|
|||
abort ();
|
||||
}
|
||||
|
||||
return stab_push_string (info, buf, index, TRUE, size);
|
||||
return stab_push_string (info, buf, tindex, TRUE, size);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -699,7 +699,7 @@ stab_float_type (void *p, unsigned int size)
|
|||
size);
|
||||
else
|
||||
{
|
||||
long index;
|
||||
long tindex;
|
||||
char *int_type;
|
||||
char buf[50];
|
||||
|
||||
|
@ -708,19 +708,19 @@ stab_float_type (void *p, unsigned int size)
|
|||
return FALSE;
|
||||
int_type = stab_pop_type (info);
|
||||
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
|
||||
if (size > 0
|
||||
&& size - 1 < (sizeof info->type_cache.float_types
|
||||
/ sizeof info->type_cache.float_types[0]))
|
||||
info->type_cache.float_types[size - 1] = index;
|
||||
info->type_cache.float_types[size - 1] = tindex;
|
||||
|
||||
sprintf (buf, "%ld=r%s;%u;0;", index, int_type, size);
|
||||
sprintf (buf, "%ld=r%s;%u;0;", tindex, int_type, size);
|
||||
|
||||
free (int_type);
|
||||
|
||||
return stab_push_string (info, buf, index, TRUE, size);
|
||||
return stab_push_string (info, buf, tindex, TRUE, size);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -731,14 +731,14 @@ stab_complex_type (void *p, unsigned int size)
|
|||
{
|
||||
struct stab_write_handle *info = (struct stab_write_handle *) p;
|
||||
char buf[50];
|
||||
long index;
|
||||
long tindex;
|
||||
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
|
||||
sprintf (buf, "%ld=r%ld;%u;0;", index, index, size);
|
||||
sprintf (buf, "%ld=r%ld;%u;0;", tindex, tindex, size);
|
||||
|
||||
return stab_push_string (info, buf, index, TRUE, size * 2);
|
||||
return stab_push_string (info, buf, tindex, TRUE, size * 2);
|
||||
}
|
||||
|
||||
/* Push a bfd_boolean type. We use an XCOFF predefined type, since gdb
|
||||
|
@ -748,29 +748,29 @@ static bfd_boolean
|
|||
stab_bool_type (void *p, unsigned int size)
|
||||
{
|
||||
struct stab_write_handle *info = (struct stab_write_handle *) p;
|
||||
long index;
|
||||
long tindex;
|
||||
|
||||
switch (size)
|
||||
{
|
||||
case 1:
|
||||
index = -21;
|
||||
tindex = -21;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
index = -22;
|
||||
tindex = -22;
|
||||
break;
|
||||
|
||||
default:
|
||||
case 4:
|
||||
index = -16;
|
||||
tindex = -16;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
index = -33;
|
||||
tindex = -33;
|
||||
break;
|
||||
}
|
||||
|
||||
return stab_push_defined_type (info, index, size);
|
||||
return stab_push_defined_type (info, tindex, size);
|
||||
}
|
||||
|
||||
/* Push an enum type. */
|
||||
|
@ -783,7 +783,7 @@ stab_enum_type (void *p, const char *tag, const char **names,
|
|||
size_t len;
|
||||
const char **pn;
|
||||
char *buf;
|
||||
long index = 0;
|
||||
long tindex = 0;
|
||||
bfd_signed_vma *pv;
|
||||
|
||||
if (names == NULL)
|
||||
|
@ -811,9 +811,9 @@ stab_enum_type (void *p, const char *tag, const char **names,
|
|||
strcpy (buf, "e");
|
||||
else
|
||||
{
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
sprintf (buf, "%s:T%ld=e", tag, index);
|
||||
sprintf (buf, "%s:T%ld=e", tag, tindex);
|
||||
}
|
||||
|
||||
for (pn = names, pv = vals; *pn != NULL; pn++, pv++)
|
||||
|
@ -830,7 +830,7 @@ stab_enum_type (void *p, const char *tag, const char **names,
|
|||
{
|
||||
/* FIXME: The size is just a guess. */
|
||||
if (! stab_write_symbol (info, N_LSYM, 0, 0, buf)
|
||||
|| ! stab_push_defined_type (info, index, 4))
|
||||
|| ! stab_push_defined_type (info, tindex, 4))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -847,7 +847,7 @@ stab_modify_type (struct stab_write_handle *info, int mod,
|
|||
unsigned int size, long **cache, size_t *cache_alloc)
|
||||
{
|
||||
long targindex;
|
||||
long index;
|
||||
long tindex;
|
||||
char *s, *buf;
|
||||
|
||||
assert (info->type_stack != NULL);
|
||||
|
@ -887,8 +887,8 @@ stab_modify_type (struct stab_write_handle *info, int mod,
|
|||
*cache_alloc = alloc;
|
||||
}
|
||||
|
||||
index = (*cache)[targindex];
|
||||
if (index != 0 && ! info->type_stack->definition)
|
||||
tindex = (*cache)[targindex];
|
||||
if (tindex != 0 && ! info->type_stack->definition)
|
||||
{
|
||||
/* We have already defined a modification of this type, and
|
||||
the entry on the type stack is not a definition, so we
|
||||
|
@ -897,22 +897,22 @@ stab_modify_type (struct stab_write_handle *info, int mod,
|
|||
is a struct which we did not define at the time it was
|
||||
referenced). */
|
||||
free (stab_pop_type (info));
|
||||
if (! stab_push_defined_type (info, index, size))
|
||||
if (! stab_push_defined_type (info, tindex, size))
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
|
||||
s = stab_pop_type (info);
|
||||
buf = (char *) xmalloc (strlen (s) + 20);
|
||||
sprintf (buf, "%ld=%c%s", index, mod, s);
|
||||
sprintf (buf, "%ld=%c%s", tindex, mod, s);
|
||||
free (s);
|
||||
|
||||
(*cache)[targindex] = index;
|
||||
(*cache)[targindex] = tindex;
|
||||
|
||||
if (! stab_push_string (info, buf, index, TRUE, size))
|
||||
if (! stab_push_string (info, buf, tindex, TRUE, size))
|
||||
return FALSE;
|
||||
|
||||
free (buf);
|
||||
|
@ -1019,7 +1019,7 @@ stab_array_type (void *p, bfd_signed_vma low, bfd_signed_vma high,
|
|||
bfd_boolean definition;
|
||||
unsigned int element_size;
|
||||
char *range, *element, *buf;
|
||||
long index;
|
||||
long tindex;
|
||||
unsigned int size;
|
||||
|
||||
definition = info->type_stack->definition;
|
||||
|
@ -1033,17 +1033,17 @@ stab_array_type (void *p, bfd_signed_vma low, bfd_signed_vma high,
|
|||
|
||||
if (! stringp)
|
||||
{
|
||||
index = 0;
|
||||
tindex = 0;
|
||||
*buf = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We need to define a type in order to include the string
|
||||
attribute. */
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
definition = TRUE;
|
||||
sprintf (buf, "%ld=@S;", index);
|
||||
sprintf (buf, "%ld=@S;", tindex);
|
||||
}
|
||||
|
||||
sprintf (buf + strlen (buf), "ar%s;%ld;%ld;%s",
|
||||
|
@ -1055,7 +1055,7 @@ stab_array_type (void *p, bfd_signed_vma low, bfd_signed_vma high,
|
|||
size = 0;
|
||||
else
|
||||
size = element_size * ((high - low) + 1);
|
||||
if (! stab_push_string (info, buf, index, definition, size))
|
||||
if (! stab_push_string (info, buf, tindex, definition, size))
|
||||
return FALSE;
|
||||
|
||||
free (buf);
|
||||
|
@ -1071,7 +1071,7 @@ stab_set_type (void *p, bfd_boolean bitstringp)
|
|||
struct stab_write_handle *info = (struct stab_write_handle *) p;
|
||||
bfd_boolean definition;
|
||||
char *s, *buf;
|
||||
long index;
|
||||
long tindex;
|
||||
|
||||
definition = info->type_stack->definition;
|
||||
|
||||
|
@ -1081,22 +1081,22 @@ stab_set_type (void *p, bfd_boolean bitstringp)
|
|||
if (! bitstringp)
|
||||
{
|
||||
*buf = '\0';
|
||||
index = 0;
|
||||
tindex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We need to define a type in order to include the string
|
||||
attribute. */
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
definition = TRUE;
|
||||
sprintf (buf, "%ld=@S;", index);
|
||||
sprintf (buf, "%ld=@S;", tindex);
|
||||
}
|
||||
|
||||
sprintf (buf + strlen (buf), "S%s", s);
|
||||
free (s);
|
||||
|
||||
if (! stab_push_string (info, buf, index, definition, 0))
|
||||
if (! stab_push_string (info, buf, tindex, definition, 0))
|
||||
return FALSE;
|
||||
|
||||
free (buf);
|
||||
|
@ -1309,7 +1309,7 @@ stab_start_struct_type (void *p, const char *tag, unsigned int id,
|
|||
bfd_boolean structp, unsigned int size)
|
||||
{
|
||||
struct stab_write_handle *info = (struct stab_write_handle *) p;
|
||||
long index;
|
||||
long tindex;
|
||||
bfd_boolean definition;
|
||||
char *buf;
|
||||
|
||||
|
@ -1317,17 +1317,17 @@ stab_start_struct_type (void *p, const char *tag, unsigned int id,
|
|||
|
||||
if (id == 0)
|
||||
{
|
||||
index = 0;
|
||||
tindex = 0;
|
||||
*buf = '\0';
|
||||
definition = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
index = stab_get_struct_index (info, tag, id, DEBUG_KIND_ILLEGAL,
|
||||
tindex = stab_get_struct_index (info, tag, id, DEBUG_KIND_ILLEGAL,
|
||||
&size);
|
||||
if (index < 0)
|
||||
if (tindex < 0)
|
||||
return FALSE;
|
||||
sprintf (buf, "%ld=", index);
|
||||
sprintf (buf, "%ld=", tindex);
|
||||
definition = TRUE;
|
||||
}
|
||||
|
||||
|
@ -1335,7 +1335,7 @@ stab_start_struct_type (void *p, const char *tag, unsigned int id,
|
|||
structp ? 's' : 'u',
|
||||
size);
|
||||
|
||||
if (! stab_push_string (info, buf, index, definition, size))
|
||||
if (! stab_push_string (info, buf, tindex, definition, size))
|
||||
return FALSE;
|
||||
|
||||
info->type_stack->fields = (char *) xmalloc (1);
|
||||
|
@ -1414,14 +1414,14 @@ stab_end_struct_type (void *p)
|
|||
{
|
||||
struct stab_write_handle *info = (struct stab_write_handle *) p;
|
||||
bfd_boolean definition;
|
||||
long index;
|
||||
long tindex;
|
||||
unsigned int size;
|
||||
char *fields, *first, *buf;
|
||||
|
||||
assert (info->type_stack != NULL && info->type_stack->fields != NULL);
|
||||
|
||||
definition = info->type_stack->definition;
|
||||
index = info->type_stack->index;
|
||||
tindex = info->type_stack->index;
|
||||
size = info->type_stack->size;
|
||||
fields = info->type_stack->fields;
|
||||
first = stab_pop_type (info);
|
||||
|
@ -1431,7 +1431,7 @@ stab_end_struct_type (void *p)
|
|||
free (first);
|
||||
free (fields);
|
||||
|
||||
if (! stab_push_string (info, buf, index, definition, size))
|
||||
if (! stab_push_string (info, buf, tindex, definition, size))
|
||||
return FALSE;
|
||||
|
||||
free (buf);
|
||||
|
@ -1867,14 +1867,14 @@ stab_tag_type (void *p, const char *name, unsigned int id,
|
|||
enum debug_type_kind kind)
|
||||
{
|
||||
struct stab_write_handle *info = (struct stab_write_handle *) p;
|
||||
long index;
|
||||
long tindex;
|
||||
unsigned int size = 0;
|
||||
|
||||
index = stab_get_struct_index (info, name, id, kind, &size);
|
||||
if (index < 0)
|
||||
tindex = stab_get_struct_index (info, name, id, kind, &size);
|
||||
if (tindex < 0)
|
||||
return FALSE;
|
||||
|
||||
return stab_push_defined_type (info, index, size);
|
||||
return stab_push_defined_type (info, tindex, size);
|
||||
}
|
||||
|
||||
/* Define a typedef. */
|
||||
|
@ -1883,24 +1883,24 @@ static bfd_boolean
|
|||
stab_typdef (void *p, const char *name)
|
||||
{
|
||||
struct stab_write_handle *info = (struct stab_write_handle *) p;
|
||||
long index;
|
||||
long tindex;
|
||||
unsigned int size;
|
||||
char *s, *buf;
|
||||
struct string_hash_entry *h;
|
||||
|
||||
index = info->type_stack->index;
|
||||
tindex = info->type_stack->index;
|
||||
size = info->type_stack->size;
|
||||
s = stab_pop_type (info);
|
||||
|
||||
buf = (char *) xmalloc (strlen (name) + strlen (s) + 20);
|
||||
|
||||
if (index > 0)
|
||||
if (tindex > 0)
|
||||
sprintf (buf, "%s:t%s", name, s);
|
||||
else
|
||||
{
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
sprintf (buf, "%s:t%ld=%s", name, index, s);
|
||||
sprintf (buf, "%s:t%ld=%s", name, tindex, s);
|
||||
}
|
||||
|
||||
free (s);
|
||||
|
@ -1920,7 +1920,7 @@ stab_typdef (void *p, const char *name)
|
|||
|
||||
/* I don't think we care about redefinitions. */
|
||||
|
||||
h->index = index;
|
||||
h->index = tindex;
|
||||
h->size = size;
|
||||
|
||||
return TRUE;
|
||||
|
@ -2050,12 +2050,12 @@ stab_variable (void *p, const char *name, enum debug_var_kind kind,
|
|||
if (! ISDIGIT (*s))
|
||||
{
|
||||
char *n;
|
||||
long index;
|
||||
long tindex;
|
||||
|
||||
index = info->type_index;
|
||||
tindex = info->type_index;
|
||||
++info->type_index;
|
||||
n = (char *) xmalloc (strlen (s) + 20);
|
||||
sprintf (n, "%ld=%s", index, s);
|
||||
sprintf (n, "%ld=%s", tindex, s);
|
||||
free (s);
|
||||
s = n;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2009-12-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* frv.opc: Fix shadowed variable warnings.
|
||||
* m32c.opc: Fix shadowed variable warnings.
|
||||
|
||||
2009-11-14 Doug Evans <dje@sebabeach.org>
|
||||
|
||||
Must use VOID expression in VOID context.
|
||||
|
|
12
cpu/frv.opc
12
cpu/frv.opc
|
@ -842,7 +842,7 @@ check_insn_major_constraints (FRV_VLIW *vliw,
|
|||
int
|
||||
frv_vliw_add_insn (FRV_VLIW *vliw, const CGEN_INSN *insn)
|
||||
{
|
||||
int index;
|
||||
int slot_index;
|
||||
CGEN_ATTR_VALUE_ENUM_TYPE major;
|
||||
CGEN_ATTR_VALUE_ENUM_TYPE unit;
|
||||
VLIW_COMBO *new_vliw;
|
||||
|
@ -850,8 +850,8 @@ frv_vliw_add_insn (FRV_VLIW *vliw, const CGEN_INSN *insn)
|
|||
if (vliw->constraint_violation || CGEN_INSN_INVALID_P (insn))
|
||||
return 1;
|
||||
|
||||
index = vliw->next_slot;
|
||||
if (index >= FRV_VLIW_SIZE)
|
||||
slot_index = vliw->next_slot;
|
||||
if (slot_index >= FRV_VLIW_SIZE)
|
||||
return 1;
|
||||
|
||||
unit = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_UNIT);
|
||||
|
@ -878,7 +878,7 @@ frv_vliw_add_insn (FRV_VLIW *vliw, const CGEN_INSN *insn)
|
|||
break;
|
||||
}
|
||||
|
||||
if (index <= 0)
|
||||
if (slot_index <= 0)
|
||||
{
|
||||
/* Any insn can be added to slot 0. */
|
||||
while (! match_unit (vliw, unit, (*vliw->current_vliw)[0]))
|
||||
|
@ -898,8 +898,8 @@ frv_vliw_add_insn (FRV_VLIW *vliw, const CGEN_INSN *insn)
|
|||
if (new_vliw && check_insn_major_constraints (vliw, major, insn))
|
||||
{
|
||||
vliw->current_vliw = new_vliw;
|
||||
vliw->major[index] = major;
|
||||
vliw->insn[index] = insn;
|
||||
vliw->major[slot_index] = major;
|
||||
vliw->insn[slot_index] = insn;
|
||||
vliw->next_slot++;
|
||||
return 0;
|
||||
}
|
||||
|
|
69
cpu/m32c.opc
69
cpu/m32c.opc
|
@ -156,27 +156,26 @@ parse_unsigned8 (CGEN_CPU_DESC cd, const char **strp,
|
|||
int opindex, unsigned long *valuep)
|
||||
{
|
||||
const char *errmsg = 0;
|
||||
unsigned long value;
|
||||
unsigned long value = 0;
|
||||
long have_zero = 0;
|
||||
|
||||
if (strncasecmp (*strp, "%dsp8(", 6) == 0)
|
||||
{
|
||||
enum cgen_parse_operand_result result_type;
|
||||
bfd_vma value;
|
||||
const char *errmsg;
|
||||
bfd_vma val;
|
||||
|
||||
*strp += 6;
|
||||
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_8,
|
||||
& result_type, & value);
|
||||
& result_type, & val);
|
||||
if (**strp != ')')
|
||||
return _("missing `)'");
|
||||
(*strp) ++;
|
||||
|
||||
if (errmsg == NULL
|
||||
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
|
||||
{
|
||||
return _("%dsp8() takes a symbolic address, not a number");
|
||||
}
|
||||
return _("%dsp8() takes a symbolic address, not a number");
|
||||
|
||||
value = val;
|
||||
*valuep = value;
|
||||
return errmsg;
|
||||
}
|
||||
|
@ -253,26 +252,25 @@ parse_signed8 (CGEN_CPU_DESC cd, const char **strp,
|
|||
int opindex, signed long *valuep)
|
||||
{
|
||||
const char *errmsg = 0;
|
||||
signed long value;
|
||||
signed long value = 0;
|
||||
|
||||
if (strncasecmp (*strp, "%hi8(", 5) == 0)
|
||||
{
|
||||
enum cgen_parse_operand_result result_type;
|
||||
bfd_vma value;
|
||||
const char *errmsg;
|
||||
bfd_vma val;
|
||||
|
||||
*strp += 5;
|
||||
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_M32C_HI8,
|
||||
& result_type, & value);
|
||||
& result_type, & val);
|
||||
if (**strp != ')')
|
||||
return _("missing `)'");
|
||||
(*strp) ++;
|
||||
|
||||
if (errmsg == NULL
|
||||
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
|
||||
{
|
||||
value >>= 16;
|
||||
}
|
||||
val >>= 16;
|
||||
|
||||
value = val;
|
||||
*valuep = value;
|
||||
return errmsg;
|
||||
}
|
||||
|
@ -294,27 +292,26 @@ parse_unsigned16 (CGEN_CPU_DESC cd, const char **strp,
|
|||
int opindex, unsigned long *valuep)
|
||||
{
|
||||
const char *errmsg = 0;
|
||||
unsigned long value;
|
||||
unsigned long value = 0;
|
||||
long have_zero = 0;
|
||||
|
||||
if (strncasecmp (*strp, "%dsp16(", 7) == 0)
|
||||
{
|
||||
enum cgen_parse_operand_result result_type;
|
||||
bfd_vma value;
|
||||
const char *errmsg;
|
||||
bfd_vma val;
|
||||
|
||||
*strp += 7;
|
||||
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_16,
|
||||
& result_type, & value);
|
||||
& result_type, & val);
|
||||
if (**strp != ')')
|
||||
return _("missing `)'");
|
||||
(*strp) ++;
|
||||
|
||||
if (errmsg == NULL
|
||||
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
|
||||
{
|
||||
return _("%dsp16() takes a symbolic address, not a number");
|
||||
}
|
||||
return _("%dsp16() takes a symbolic address, not a number");
|
||||
|
||||
value = val;
|
||||
*valuep = value;
|
||||
return errmsg;
|
||||
}
|
||||
|
@ -354,26 +351,25 @@ parse_signed16 (CGEN_CPU_DESC cd, const char **strp,
|
|||
int opindex, signed long *valuep)
|
||||
{
|
||||
const char *errmsg = 0;
|
||||
signed long value;
|
||||
signed long value = 0;
|
||||
|
||||
if (strncasecmp (*strp, "%lo16(", 6) == 0)
|
||||
{
|
||||
enum cgen_parse_operand_result result_type;
|
||||
bfd_vma value;
|
||||
const char *errmsg;
|
||||
bfd_vma val;
|
||||
|
||||
*strp += 6;
|
||||
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_LO16,
|
||||
& result_type, & value);
|
||||
& result_type, & val);
|
||||
if (**strp != ')')
|
||||
return _("missing `)'");
|
||||
(*strp) ++;
|
||||
|
||||
if (errmsg == NULL
|
||||
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
|
||||
{
|
||||
value &= 0xffff;
|
||||
}
|
||||
value &= 0xffff;
|
||||
|
||||
value = val;
|
||||
*valuep = value;
|
||||
return errmsg;
|
||||
}
|
||||
|
@ -381,21 +377,20 @@ parse_signed16 (CGEN_CPU_DESC cd, const char **strp,
|
|||
if (strncasecmp (*strp, "%hi16(", 6) == 0)
|
||||
{
|
||||
enum cgen_parse_operand_result result_type;
|
||||
bfd_vma value;
|
||||
const char *errmsg;
|
||||
bfd_vma val;
|
||||
|
||||
*strp += 6;
|
||||
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_HI16,
|
||||
& result_type, & value);
|
||||
& result_type, & val);
|
||||
if (**strp != ')')
|
||||
return _("missing `)'");
|
||||
(*strp) ++;
|
||||
|
||||
if (errmsg == NULL
|
||||
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
|
||||
{
|
||||
value >>= 16;
|
||||
}
|
||||
val >>= 16;
|
||||
|
||||
value = val;
|
||||
*valuep = value;
|
||||
return errmsg;
|
||||
}
|
||||
|
@ -1121,7 +1116,7 @@ print_regset (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
|
|||
};
|
||||
disassemble_info *info = dis_info;
|
||||
int mask;
|
||||
int index = 0;
|
||||
int reg_index = 0;
|
||||
char* comma = "";
|
||||
|
||||
if (push)
|
||||
|
@ -1135,7 +1130,7 @@ print_regset (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
|
|||
comma = ",";
|
||||
}
|
||||
|
||||
for (index = 1; index <= 7; ++index)
|
||||
for (reg_index = 1; reg_index <= 7; ++reg_index)
|
||||
{
|
||||
if (push)
|
||||
mask >>= 1;
|
||||
|
@ -1145,7 +1140,7 @@ print_regset (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
|
|||
if (value & mask)
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, "%s%s", comma,
|
||||
m16c_register_names [index]);
|
||||
m16c_register_names [reg_index]);
|
||||
comma = ",";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2009-12-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* elfcpp_file.h: Fix shadowed variable warnings.
|
||||
|
||||
2009-12-10 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.h: New enums for EABI object attribute tags and values.
|
||||
|
|
|
@ -449,10 +449,10 @@ template<int size, bool big_endian, typename File>
|
|||
unsigned int
|
||||
Elf_file<size, big_endian, File>::find_section_by_type(unsigned int type)
|
||||
{
|
||||
unsigned int shnum = this->shnum();
|
||||
unsigned int tshnum = this->shnum();
|
||||
typename File::View v(this->file_->view(this->shoff_,
|
||||
This::shdr_size * shnum));
|
||||
for (unsigned int i = 0; i < shnum; i++)
|
||||
This::shdr_size * tshnum));
|
||||
for (unsigned int i = 0; i < tshnum; i++)
|
||||
{
|
||||
Ef_shdr shdr(v.data() + This::shdr_size * i);
|
||||
if (shdr.get_sh_type() == type)
|
||||
|
@ -494,8 +494,8 @@ Elf_file<size, big_endian, File>::section_name(unsigned int shndx)
|
|||
off_t shstr_off;
|
||||
typename Elf_types<size>::Elf_WXword shstr_size;
|
||||
{
|
||||
const unsigned int shstrndx = this->shstrndx_;
|
||||
typename File::View v(file->view(this->section_header_offset(shstrndx),
|
||||
const unsigned int fshstrndx = this->shstrndx_;
|
||||
typename File::View v(file->view(this->section_header_offset(fshstrndx),
|
||||
This::shdr_size));
|
||||
Ef_shdr shstr_shdr(v.data());
|
||||
shstr_off = shstr_shdr.get_sh_offset();
|
||||
|
|
|
@ -1,3 +1,49 @@
|
|||
2009-12-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
* doc/Makefile.in: Regenerate.
|
||||
* configure: Regenerate.
|
||||
* dw2gencfi.c: Fix shadowed variable warnings.
|
||||
* dwarf2dbg.c: Likewise.
|
||||
* expr.c: Likewise.
|
||||
* hash.c: Likewise.
|
||||
* listing.c: Likewise.
|
||||
* macro.c: Likewise.
|
||||
* read.c: Likewise.
|
||||
* stabs.c: Likewise.
|
||||
* symbols.c: Likewise.
|
||||
* write.c: Likewise.
|
||||
* config/bfin-parse.y: Likewise.
|
||||
* config/obj-coff.c: Likewise.
|
||||
* config/tc-arm.c: Likewise.
|
||||
* config/tc-bfin.c: Likewise.
|
||||
* config/tc-cr16.c: Likewise.
|
||||
* config/tc-crx.c: Likewise.
|
||||
* config/tc-d10v.c: Likewise.
|
||||
* config/tc-d30v.c: Likewise.
|
||||
* config/tc-frv.c: Likewise.
|
||||
* config/tc-i370.c: Likewise.
|
||||
* config/tc-i386-intel.c: Likewise.
|
||||
* config/tc-i386.c: Likewise.
|
||||
* config/tc-ia64.c: Likewise.
|
||||
* config/tc-m32r.c: Likewise.
|
||||
* config/tc-m68hc11.c: Likewise.
|
||||
* config/tc-mips.c: Likewise.
|
||||
* config/tc-mn10200.c: Likewise.
|
||||
* config/tc-mn10300.c: Likewise.
|
||||
* config/tc-ns32k.c: Likewise.
|
||||
* config/tc-ppc.c: Likewise.
|
||||
* config/tc-score.c: Likewise.
|
||||
* config/tc-score7.c: Likewise.
|
||||
* config/tc-sh.c: Likewise.
|
||||
* config/tc-sh64.c: Likewise.
|
||||
* config/tc-sparc.c: Likewise.
|
||||
* config/tc-tic30.c: Likewise.
|
||||
* config/tc-tic4x.c: Likewise.
|
||||
* config/tc-tic54x.c: Likewise.
|
||||
* config/tc-xtensa.c: Likewise.
|
||||
* config/tc-z8k.c: Likewise.
|
||||
|
||||
2009-12-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/tc-i386.c (arch_entry): Add len and skip.
|
||||
|
|
|
@ -48,12 +48,15 @@ DIST_COMMON = NEWS README ChangeLog $(srcdir)/Makefile.in \
|
|||
$(srcdir)/../ylwrap
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
|
||||
$(top_srcdir)/../config/zlib.m4 \
|
||||
$(top_srcdir)/../bfd/warning.m4 \
|
||||
$(top_srcdir)/../config/depstand.m4 \
|
||||
$(top_srcdir)/../config/gettext-sister.m4 \
|
||||
$(top_srcdir)/../config/largefile.m4 \
|
||||
$(top_srcdir)/../config/lead-dot.m4 \
|
||||
$(top_srcdir)/../config/nls.m4 \
|
||||
$(top_srcdir)/../config/override.m4 \
|
||||
$(top_srcdir)/../config/plugins.m4 \
|
||||
$(top_srcdir)/../config/po.m4 \
|
||||
$(top_srcdir)/../config/progtest.m4 \
|
||||
$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
|
||||
|
|
|
@ -193,10 +193,10 @@ yyerror (char *msg)
|
|||
}
|
||||
|
||||
static int
|
||||
in_range_p (Expr_Node *expr, int from, int to, unsigned int mask)
|
||||
in_range_p (Expr_Node *exp, int from, int to, unsigned int mask)
|
||||
{
|
||||
int val = EXPR_VALUE (expr);
|
||||
if (expr->type != Expr_Node_Constant)
|
||||
int val = EXPR_VALUE (exp);
|
||||
if (exp->type != Expr_Node_Constant)
|
||||
return 0;
|
||||
if (val < from || val > to)
|
||||
return 0;
|
||||
|
@ -4411,13 +4411,13 @@ mkexpr (int x, SYMBOL_T s)
|
|||
}
|
||||
|
||||
static int
|
||||
value_match (Expr_Node *expr, int sz, int sign, int mul, int issigned)
|
||||
value_match (Expr_Node *exp, int sz, int sign, int mul, int issigned)
|
||||
{
|
||||
int umax = (1 << sz) - 1;
|
||||
int min = -1 << (sz - 1);
|
||||
int max = (1 << (sz - 1)) - 1;
|
||||
|
||||
int v = (EXPR_VALUE (expr)) & 0xffffffff;
|
||||
int v = (EXPR_VALUE (exp)) & 0xffffffff;
|
||||
|
||||
if ((v % mul) != 0)
|
||||
{
|
||||
|
|
|
@ -621,14 +621,11 @@ obj_coff_def (int what ATTRIBUTE_UNUSED)
|
|||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
unsigned int dim_index;
|
||||
|
||||
static void
|
||||
obj_coff_endef (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
symbolS *symbolP = NULL;
|
||||
|
||||
dim_index = 0;
|
||||
if (def_symbol_in_progress == NULL)
|
||||
{
|
||||
as_warn (_(".endef pseudo-op used outside of .def/.endef: ignored."));
|
||||
|
@ -861,7 +858,7 @@ obj_coff_endef (int ignore ATTRIBUTE_UNUSED)
|
|||
static void
|
||||
obj_coff_dim (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int dim_index;
|
||||
int d_index;
|
||||
|
||||
if (def_symbol_in_progress == NULL)
|
||||
{
|
||||
|
@ -872,10 +869,10 @@ obj_coff_dim (int ignore ATTRIBUTE_UNUSED)
|
|||
|
||||
S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1);
|
||||
|
||||
for (dim_index = 0; dim_index < DIMNUM; dim_index++)
|
||||
for (d_index = 0; d_index < DIMNUM; d_index++)
|
||||
{
|
||||
SKIP_WHITESPACES ();
|
||||
SA_SET_SYM_DIMEN (def_symbol_in_progress, dim_index,
|
||||
SA_SET_SYM_DIMEN (def_symbol_in_progress, d_index,
|
||||
get_absolute_expression ());
|
||||
|
||||
switch (*input_line_pointer)
|
||||
|
@ -889,7 +886,7 @@ obj_coff_dim (int ignore ATTRIBUTE_UNUSED)
|
|||
/* Fall through. */
|
||||
case '\n':
|
||||
case ';':
|
||||
dim_index = DIMNUM;
|
||||
d_index = DIMNUM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1052,10 +1052,10 @@ md_atof (int type, char * litP, int * sizeP)
|
|||
/* We handle all bad expressions here, so that we can report the faulty
|
||||
instruction in the error message. */
|
||||
void
|
||||
md_operand (expressionS * expr)
|
||||
md_operand (expressionS * exp)
|
||||
{
|
||||
if (in_my_get_expression)
|
||||
expr->X_op = O_illegal;
|
||||
exp->X_op = O_illegal;
|
||||
}
|
||||
|
||||
/* Immediate values. */
|
||||
|
@ -1583,23 +1583,23 @@ parse_reg_list (char ** strp)
|
|||
}
|
||||
else
|
||||
{
|
||||
expressionS expr;
|
||||
expressionS exp;
|
||||
|
||||
if (my_get_expression (&expr, &str, GE_NO_PREFIX))
|
||||
if (my_get_expression (&exp, &str, GE_NO_PREFIX))
|
||||
return FAIL;
|
||||
|
||||
if (expr.X_op == O_constant)
|
||||
if (exp.X_op == O_constant)
|
||||
{
|
||||
if (expr.X_add_number
|
||||
!= (expr.X_add_number & 0x0000ffff))
|
||||
if (exp.X_add_number
|
||||
!= (exp.X_add_number & 0x0000ffff))
|
||||
{
|
||||
inst.error = _("invalid register mask");
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if ((range & expr.X_add_number) != 0)
|
||||
if ((range & exp.X_add_number) != 0)
|
||||
{
|
||||
int regno = range & expr.X_add_number;
|
||||
int regno = range & exp.X_add_number;
|
||||
|
||||
regno &= -regno;
|
||||
regno = (1 << regno) - 1;
|
||||
|
@ -1608,7 +1608,7 @@ parse_reg_list (char ** strp)
|
|||
regno);
|
||||
}
|
||||
|
||||
range |= expr.X_add_number;
|
||||
range |= exp.X_add_number;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1618,7 +1618,7 @@ parse_reg_list (char ** strp)
|
|||
return FAIL;
|
||||
}
|
||||
|
||||
memcpy (&inst.reloc.exp, &expr, sizeof (expressionS));
|
||||
memcpy (&inst.reloc.exp, &exp, sizeof (expressionS));
|
||||
inst.reloc.type = BFD_RELOC_ARM_MULTI;
|
||||
inst.reloc.pc_rel = 0;
|
||||
}
|
||||
|
@ -4711,7 +4711,7 @@ static int
|
|||
parse_shifter_operand (char **str, int i)
|
||||
{
|
||||
int value;
|
||||
expressionS expr;
|
||||
expressionS exp;
|
||||
|
||||
if ((value = arm_reg_parse (str, REG_TYPE_RN)) != FAIL)
|
||||
{
|
||||
|
@ -4735,16 +4735,16 @@ parse_shifter_operand (char **str, int i)
|
|||
if (skip_past_comma (str) == SUCCESS)
|
||||
{
|
||||
/* #x, y -- ie explicit rotation by Y. */
|
||||
if (my_get_expression (&expr, str, GE_NO_PREFIX))
|
||||
if (my_get_expression (&exp, str, GE_NO_PREFIX))
|
||||
return FAIL;
|
||||
|
||||
if (expr.X_op != O_constant || inst.reloc.exp.X_op != O_constant)
|
||||
if (exp.X_op != O_constant || inst.reloc.exp.X_op != O_constant)
|
||||
{
|
||||
inst.error = _("constant expression expected");
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
value = expr.X_add_number;
|
||||
value = exp.X_add_number;
|
||||
if (value < 0 || value > 30 || value % 2 != 0)
|
||||
{
|
||||
inst.error = _("invalid rotation");
|
||||
|
@ -14163,12 +14163,13 @@ do_neon_mov (void)
|
|||
case NS_SR: /* case 4. */
|
||||
{
|
||||
unsigned bcdebits = 0;
|
||||
struct neon_type_el et = neon_check_type (2, NS_NULL,
|
||||
N_8 | N_16 | N_32 | N_KEY, N_EQK);
|
||||
int logsize = neon_logbits (et.size);
|
||||
int logsize;
|
||||
unsigned dn = NEON_SCALAR_REG (inst.operands[0].reg);
|
||||
unsigned x = NEON_SCALAR_INDEX (inst.operands[0].reg);
|
||||
|
||||
et = neon_check_type (2, NS_NULL, N_8 | N_16 | N_32 | N_KEY, N_EQK);
|
||||
logsize = neon_logbits (et.size);
|
||||
|
||||
constraint (!ARM_CPU_HAS_FEATURE (cpu_variant, fpu_vfp_ext_v1),
|
||||
_(BAD_FPU));
|
||||
constraint (!ARM_CPU_HAS_FEATURE (cpu_variant, fpu_neon_ext_v1)
|
||||
|
@ -14210,13 +14211,15 @@ do_neon_mov (void)
|
|||
|
||||
case NS_RS: /* case 6. */
|
||||
{
|
||||
struct neon_type_el et = neon_check_type (2, NS_NULL,
|
||||
N_EQK, N_S8 | N_S16 | N_U8 | N_U16 | N_32 | N_KEY);
|
||||
unsigned logsize = neon_logbits (et.size);
|
||||
unsigned logsize;
|
||||
unsigned dn = NEON_SCALAR_REG (inst.operands[1].reg);
|
||||
unsigned x = NEON_SCALAR_INDEX (inst.operands[1].reg);
|
||||
unsigned abcdebits = 0;
|
||||
|
||||
et = neon_check_type (2, NS_NULL,
|
||||
N_EQK, N_S8 | N_S16 | N_U8 | N_U16 | N_32 | N_KEY);
|
||||
logsize = neon_logbits (et.size);
|
||||
|
||||
constraint (!ARM_CPU_HAS_FEATURE (cpu_variant, fpu_vfp_ext_v1),
|
||||
_(BAD_FPU));
|
||||
constraint (!ARM_CPU_HAS_FEATURE (cpu_variant, fpu_neon_ext_v1)
|
||||
|
@ -19126,12 +19129,12 @@ tc_arm_regname_to_dw2regnum (char *regname)
|
|||
void
|
||||
tc_pe_dwarf2_emit_offset (symbolS *symbol, unsigned int size)
|
||||
{
|
||||
expressionS expr;
|
||||
expressionS exp;
|
||||
|
||||
expr.X_op = O_secrel;
|
||||
expr.X_add_symbol = symbol;
|
||||
expr.X_add_number = 0;
|
||||
emit_expr (&expr, size);
|
||||
exp.X_op = O_secrel;
|
||||
exp.X_add_symbol = symbol;
|
||||
exp.X_add_number = 0;
|
||||
emit_expr (&exp, size);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -22602,18 +22605,18 @@ aeabi_set_public_attributes (void)
|
|||
/* Tag_CPU_name. */
|
||||
if (selected_cpu_name[0])
|
||||
{
|
||||
char *p;
|
||||
char *q;
|
||||
|
||||
p = selected_cpu_name;
|
||||
if (strncmp (p, "armv", 4) == 0)
|
||||
q = selected_cpu_name;
|
||||
if (strncmp (q, "armv", 4) == 0)
|
||||
{
|
||||
int i;
|
||||
|
||||
p += 4;
|
||||
for (i = 0; p[i]; i++)
|
||||
p[i] = TOUPPER (p[i]);
|
||||
q += 4;
|
||||
for (i = 0; q[i]; i++)
|
||||
q[i] = TOUPPER (q[i]);
|
||||
}
|
||||
aeabi_set_attribute_string (Tag_CPU_name, p);
|
||||
aeabi_set_attribute_string (Tag_CPU_name, q);
|
||||
}
|
||||
|
||||
/* Tag_CPU_arch. */
|
||||
|
|
|
@ -1134,6 +1134,7 @@ Expr_Node_Gen_Reloc_R (Expr_Node * head)
|
|||
|
||||
#define INIT(t) t c_code = init_##t
|
||||
#define ASSIGN(x) c_code.opcode |= ((x & c_code.mask_##x)<<c_code.bits_##x)
|
||||
#define ASSIGNF(x,f) c_code.opcode |= ((x & c_code.mask_##f)<<c_code.bits_##f)
|
||||
#define ASSIGN_R(x) c_code.opcode |= (((x ? (x->regno & CODE_MASK) : 0) & c_code.mask_##x)<<c_code.bits_##x)
|
||||
|
||||
#define HI(x) ((x >> 16) & 0xffff)
|
||||
|
@ -1302,13 +1303,13 @@ bfin_gen_calla (Expr_Node * addr, int S)
|
|||
{
|
||||
int val;
|
||||
int high_val;
|
||||
int reloc = 0;
|
||||
int rel = 0;
|
||||
INIT (CALLa);
|
||||
|
||||
switch(S){
|
||||
case 0 : reloc = BFD_RELOC_BFIN_24_PCREL_JUMP_L; break;
|
||||
case 1 : reloc = BFD_RELOC_24_PCREL; break;
|
||||
case 2 : reloc = BFD_RELOC_BFIN_PLTPC; break;
|
||||
case 0 : rel = BFD_RELOC_BFIN_24_PCREL_JUMP_L; break;
|
||||
case 1 : rel = BFD_RELOC_24_PCREL; break;
|
||||
case 2 : rel = BFD_RELOC_BFIN_PLTPC; break;
|
||||
default : break;
|
||||
}
|
||||
|
||||
|
@ -1318,7 +1319,7 @@ bfin_gen_calla (Expr_Node * addr, int S)
|
|||
high_val = val >> 16;
|
||||
|
||||
return conscode (gencode (HI (c_code.opcode) | (high_val & 0xff)),
|
||||
Expr_Node_Gen_Reloc (addr, reloc));
|
||||
Expr_Node_Gen_Reloc (addr, rel));
|
||||
}
|
||||
|
||||
INSTR_T
|
||||
|
@ -1336,7 +1337,7 @@ bfin_gen_linkage (int R, int framesize)
|
|||
/* Load and Store. */
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldimmhalf (REG_T reg, int H, int S, int Z, Expr_Node * phword, int reloc)
|
||||
bfin_gen_ldimmhalf (REG_T reg, int H, int S, int Z, Expr_Node * phword, int rel)
|
||||
{
|
||||
int grp, hword;
|
||||
unsigned val = EXPR_VALUE (phword);
|
||||
|
@ -1349,11 +1350,11 @@ bfin_gen_ldimmhalf (REG_T reg, int H, int S, int Z, Expr_Node * phword, int relo
|
|||
ASSIGN_R (reg);
|
||||
grp = (GROUP (reg));
|
||||
ASSIGN (grp);
|
||||
if (reloc == 2)
|
||||
if (rel == 2)
|
||||
{
|
||||
return conscode (gencode (HI (c_code.opcode)), Expr_Node_Gen_Reloc (phword, BFD_RELOC_BFIN_16_IMM));
|
||||
}
|
||||
else if (reloc == 1)
|
||||
else if (rel == 1)
|
||||
{
|
||||
return conscode (gencode (HI (c_code.opcode)), Expr_Node_Gen_Reloc (phword, IS_H (*reg) ? BFD_RELOC_BFIN_16_HIGH : BFD_RELOC_BFIN_16_LOW));
|
||||
}
|
||||
|
@ -1450,20 +1451,19 @@ bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int Z, int W)
|
|||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node * poffset, int W, int op)
|
||||
bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node * poffset, int W, int opc)
|
||||
{
|
||||
int offset;
|
||||
int value = 0;
|
||||
INIT (LDSTii);
|
||||
|
||||
|
||||
if (!IS_PREG (*ptr))
|
||||
{
|
||||
fprintf (stderr, "Warning: possible mixup of Preg/Dreg\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (op)
|
||||
switch (opc)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
|
@ -1481,7 +1481,7 @@ bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node * poffset, int W, int op)
|
|||
offset = value;
|
||||
ASSIGN (offset);
|
||||
ASSIGN (W);
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
}
|
||||
|
@ -1580,48 +1580,48 @@ bfin_gen_alu2op (REG_T dst, REG_T src, int opc)
|
|||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_compi2opd (REG_T dst, int src, int op)
|
||||
bfin_gen_compi2opd (REG_T dst, int src, int opc)
|
||||
{
|
||||
INIT (COMPI2opD);
|
||||
|
||||
ASSIGN_R (dst);
|
||||
ASSIGN (src);
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_compi2opp (REG_T dst, int src, int op)
|
||||
bfin_gen_compi2opp (REG_T dst, int src, int opc)
|
||||
{
|
||||
INIT (COMPI2opP);
|
||||
|
||||
ASSIGN_R (dst);
|
||||
ASSIGN (src);
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dagmodik (REG_T i, int op)
|
||||
bfin_gen_dagmodik (REG_T i, int opc)
|
||||
{
|
||||
INIT (DagMODik);
|
||||
|
||||
ASSIGN_R (i);
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br)
|
||||
bfin_gen_dagmodim (REG_T i, REG_T m, int opc, int br)
|
||||
{
|
||||
INIT (DagMODim);
|
||||
|
||||
ASSIGN_R (i);
|
||||
ASSIGN_R (m);
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
ASSIGN (br);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
|
@ -1684,12 +1684,12 @@ bfin_gen_ccmv (REG_T src, REG_T dst, int T)
|
|||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_cc2stat (int cbit, int op, int D)
|
||||
bfin_gen_cc2stat (int cbit, int opc, int D)
|
||||
{
|
||||
INIT (CC2stat);
|
||||
|
||||
ASSIGN (cbit);
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
ASSIGN (D);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
|
@ -1713,11 +1713,11 @@ bfin_gen_regmv (REG_T src, REG_T dst)
|
|||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_cc2dreg (int op, REG_T reg)
|
||||
bfin_gen_cc2dreg (int opc, REG_T reg)
|
||||
{
|
||||
INIT (CC2dreg);
|
||||
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
ASSIGN_R (reg);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
|
@ -1735,13 +1735,13 @@ bfin_gen_progctrl (int prgfunc, int poprnd)
|
|||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_cactrl (REG_T reg, int a, int op)
|
||||
bfin_gen_cactrl (REG_T reg, int a, int opc)
|
||||
{
|
||||
INIT (CaCTRL);
|
||||
|
||||
ASSIGN_R (reg);
|
||||
ASSIGN (a);
|
||||
ASSIGN (op);
|
||||
ASSIGNF (opc, op);
|
||||
|
||||
return GEN_OPCODE16 ();
|
||||
}
|
||||
|
@ -1841,14 +1841,14 @@ bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2)
|
|||
}
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg)
|
||||
bfin_gen_loop (Expr_Node *exp, REG_T reg, int rop, REG_T preg)
|
||||
{
|
||||
const char *loopsym;
|
||||
char *lbeginsym, *lendsym;
|
||||
Expr_Node_Value lbeginval, lendval;
|
||||
Expr_Node *lbegin, *lend;
|
||||
|
||||
loopsym = expr->value.s_value;
|
||||
loopsym = exp->value.s_value;
|
||||
lbeginsym = (char *) xmalloc (strlen (loopsym) + strlen ("__BEGIN") + 5);
|
||||
lendsym = (char *) xmalloc (strlen (loopsym) + strlen ("__END") + 5);
|
||||
|
||||
|
@ -1875,14 +1875,14 @@ bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg)
|
|||
}
|
||||
|
||||
void
|
||||
bfin_loop_beginend (Expr_Node *expr, int begin)
|
||||
bfin_loop_beginend (Expr_Node *exp, int begin)
|
||||
{
|
||||
const char *loopsym;
|
||||
char *label_name;
|
||||
symbolS *line_label;
|
||||
symbolS *linelabel;
|
||||
const char *suffix = begin ? "__BEGIN" : "__END";
|
||||
|
||||
loopsym = expr->value.s_value;
|
||||
loopsym = exp->value.s_value;
|
||||
label_name = (char *) xmalloc (strlen (loopsym) + strlen (suffix) + 5);
|
||||
|
||||
label_name[0] = 0;
|
||||
|
@ -1891,12 +1891,12 @@ bfin_loop_beginend (Expr_Node *expr, int begin)
|
|||
strcat (label_name, loopsym);
|
||||
strcat (label_name, suffix);
|
||||
|
||||
line_label = colon (label_name);
|
||||
linelabel = colon (label_name);
|
||||
|
||||
/* LOOP_END follows the last instruction in the loop.
|
||||
Adjust label address. */
|
||||
if (!begin)
|
||||
((struct local_symbol *) line_label)->lsy_value -= last_insn_size;
|
||||
((struct local_symbol *) linelabel)->lsy_value -= last_insn_size;
|
||||
}
|
||||
|
||||
bfd_boolean
|
||||
|
@ -2018,9 +2018,9 @@ decode_dagMODim_0 (int iw0)
|
|||
| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |.br| 1 | 1 |.op|.m.....|.i.....|
|
||||
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ */
|
||||
int i = ((iw0 >> DagMODim_i_bits) & DagMODim_i_mask);
|
||||
int op = ((iw0 >> DagMODim_op_bits) & DagMODim_op_mask);
|
||||
int opc = ((iw0 >> DagMODim_op_bits) & DagMODim_op_mask);
|
||||
|
||||
if (op == 0 || op == 1)
|
||||
if (opc == 0 || opc == 1)
|
||||
return IREG_MASK (i);
|
||||
else
|
||||
return 0;
|
||||
|
@ -2199,18 +2199,18 @@ decode_LDSTii_0 (int iw0)
|
|||
| 1 | 0 | 1 |.W.|.op....|.offset........|.ptr.......|.reg.......|
|
||||
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ */
|
||||
int reg = ((iw0 >> LDSTii_reg_bit) & LDSTii_reg_mask);
|
||||
int op = ((iw0 >> LDSTii_op_bit) & LDSTii_op_mask);
|
||||
int opc = ((iw0 >> LDSTii_op_bit) & LDSTii_op_mask);
|
||||
int W = ((iw0 >> LDSTii_W_bit) & LDSTii_W_mask);
|
||||
|
||||
if (W == 0 && op != 3)
|
||||
if (W == 0 && opc != 3)
|
||||
return DREG_MASK (reg);
|
||||
else if (W == 0 && op == 3)
|
||||
else if (W == 0 && opc == 3)
|
||||
return 0;
|
||||
else if (W == 1 && op == 0)
|
||||
else if (W == 1 && opc == 0)
|
||||
return 0;
|
||||
else if (W == 1 && op == 1)
|
||||
else if (W == 1 && opc == 1)
|
||||
return 0;
|
||||
else if (W == 1 && op == 3)
|
||||
else if (W == 1 && opc == 3)
|
||||
return 0;
|
||||
|
||||
abort ();
|
||||
|
|
|
@ -317,12 +317,12 @@ get_cc (char *cc_name)
|
|||
static reg
|
||||
get_register (char *reg_name)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
|
||||
reg = (const reg_entry *) hash_find (reg_hash, reg_name);
|
||||
rreg = (const reg_entry *) hash_find (reg_hash, reg_name);
|
||||
|
||||
if (reg != NULL)
|
||||
return reg->value.reg_val;
|
||||
if (rreg != NULL)
|
||||
return rreg->value.reg_val;
|
||||
|
||||
return nullregister;
|
||||
}
|
||||
|
@ -331,7 +331,7 @@ get_register (char *reg_name)
|
|||
static reg
|
||||
get_register_pair (char *reg_name)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
char tmp_rp[16]="\0";
|
||||
|
||||
/* Add '(' and ')' to the reg pair, if its not present. */
|
||||
|
@ -340,13 +340,13 @@ get_register_pair (char *reg_name)
|
|||
tmp_rp[0] = '(';
|
||||
strcat (tmp_rp, reg_name);
|
||||
strcat (tmp_rp,")");
|
||||
reg = (const reg_entry *) hash_find (regp_hash, tmp_rp);
|
||||
rreg = (const reg_entry *) hash_find (regp_hash, tmp_rp);
|
||||
}
|
||||
else
|
||||
reg = (const reg_entry *) hash_find (regp_hash, reg_name);
|
||||
rreg = (const reg_entry *) hash_find (regp_hash, reg_name);
|
||||
|
||||
if (reg != NULL)
|
||||
return reg->value.reg_val;
|
||||
if (rreg != NULL)
|
||||
return rreg->value.reg_val;
|
||||
|
||||
return nullregister;
|
||||
}
|
||||
|
@ -356,13 +356,13 @@ get_register_pair (char *reg_name)
|
|||
static reg
|
||||
get_index_register (char *reg_name)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
|
||||
reg = (const reg_entry *) hash_find (reg_hash, reg_name);
|
||||
rreg = (const reg_entry *) hash_find (reg_hash, reg_name);
|
||||
|
||||
if ((reg != NULL)
|
||||
&& ((reg->value.reg_val == 12) || (reg->value.reg_val == 13)))
|
||||
return reg->value.reg_val;
|
||||
if ((rreg != NULL)
|
||||
&& ((rreg->value.reg_val == 12) || (rreg->value.reg_val == 13)))
|
||||
return rreg->value.reg_val;
|
||||
|
||||
return nullregister;
|
||||
}
|
||||
|
@ -371,17 +371,17 @@ get_index_register (char *reg_name)
|
|||
static reg
|
||||
get_index_register_pair (char *reg_name)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
|
||||
reg = (const reg_entry *) hash_find (regp_hash, reg_name);
|
||||
rreg = (const reg_entry *) hash_find (regp_hash, reg_name);
|
||||
|
||||
if (reg != NULL)
|
||||
if (rreg != NULL)
|
||||
{
|
||||
if ((reg->value.reg_val != 1) || (reg->value.reg_val != 7)
|
||||
|| (reg->value.reg_val != 9) || (reg->value.reg_val > 10))
|
||||
return reg->value.reg_val;
|
||||
if ((rreg->value.reg_val != 1) || (rreg->value.reg_val != 7)
|
||||
|| (rreg->value.reg_val != 9) || (rreg->value.reg_val > 10))
|
||||
return rreg->value.reg_val;
|
||||
|
||||
as_bad (_("Unknown register pair - index relative mode: `%d'"), reg->value.reg_val);
|
||||
as_bad (_("Unknown register pair - index relative mode: `%d'"), rreg->value.reg_val);
|
||||
}
|
||||
|
||||
return nullregister;
|
||||
|
@ -392,12 +392,12 @@ get_index_register_pair (char *reg_name)
|
|||
static preg
|
||||
get_pregister (char *preg_name)
|
||||
{
|
||||
const reg_entry *preg;
|
||||
const reg_entry *prreg;
|
||||
|
||||
preg = (const reg_entry *) hash_find (preg_hash, preg_name);
|
||||
prreg = (const reg_entry *) hash_find (preg_hash, preg_name);
|
||||
|
||||
if (preg != NULL)
|
||||
return preg->value.preg_val;
|
||||
if (prreg != NULL)
|
||||
return prreg->value.preg_val;
|
||||
|
||||
return nullpregister;
|
||||
}
|
||||
|
@ -407,12 +407,12 @@ get_pregister (char *preg_name)
|
|||
static preg
|
||||
get_pregisterp (char *preg_name)
|
||||
{
|
||||
const reg_entry *preg;
|
||||
const reg_entry *prreg;
|
||||
|
||||
preg = (const reg_entry *) hash_find (pregp_hash, preg_name);
|
||||
prreg = (const reg_entry *) hash_find (pregp_hash, preg_name);
|
||||
|
||||
if (preg != NULL)
|
||||
return preg->value.preg_val;
|
||||
if (prreg != NULL)
|
||||
return prreg->value.preg_val;
|
||||
|
||||
return nullpregister;
|
||||
}
|
||||
|
@ -797,20 +797,20 @@ initialise_reg_hash_table (struct hash_control ** hash_table,
|
|||
const reg_entry * register_table,
|
||||
const unsigned int num_entries)
|
||||
{
|
||||
const reg_entry * reg;
|
||||
const reg_entry * rreg;
|
||||
const char *hashret;
|
||||
|
||||
if ((* hash_table = hash_new ()) == NULL)
|
||||
as_fatal (_("Virtual memory exhausted"));
|
||||
|
||||
for (reg = register_table;
|
||||
reg < (register_table + num_entries);
|
||||
reg++)
|
||||
for (rreg = register_table;
|
||||
rreg < (register_table + num_entries);
|
||||
rreg++)
|
||||
{
|
||||
hashret = hash_insert (* hash_table, reg->name, (char *) reg);
|
||||
hashret = hash_insert (* hash_table, rreg->name, (char *) rreg);
|
||||
if (hashret)
|
||||
as_fatal (_("Internal Error: Can't hash %s: %s"),
|
||||
reg->name, hashret);
|
||||
rreg->name, hashret);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1105,20 +1105,20 @@ process_label_constant (char *str, ins * cr16_ins)
|
|||
static int
|
||||
getreg_image (reg r)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
char *reg_name;
|
||||
int is_procreg = 0; /* Nonzero means argument should be processor reg. */
|
||||
|
||||
/* Check whether the register is in registers table. */
|
||||
if (r < MAX_REG)
|
||||
reg = cr16_regtab + r;
|
||||
rreg = cr16_regtab + r;
|
||||
else /* Register not found. */
|
||||
{
|
||||
as_bad (_("Unknown register: `%d'"), r);
|
||||
return 0;
|
||||
}
|
||||
|
||||
reg_name = reg->name;
|
||||
reg_name = rreg->name;
|
||||
|
||||
/* Issue a error message when register is illegal. */
|
||||
#define IMAGE_ERR \
|
||||
|
@ -1126,16 +1126,16 @@ getreg_image (reg r)
|
|||
reg_name, ins_parse); \
|
||||
break;
|
||||
|
||||
switch (reg->type)
|
||||
switch (rreg->type)
|
||||
{
|
||||
case CR16_R_REGTYPE:
|
||||
if (! is_procreg)
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
else
|
||||
IMAGE_ERR;
|
||||
|
||||
case CR16_P_REGTYPE:
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1579,12 +1579,12 @@ check_cinv_options (char * operand)
|
|||
static int
|
||||
getregp_image (reg r)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
char *reg_name;
|
||||
|
||||
/* Check whether the register is in registers table. */
|
||||
if (r < MAX_REG)
|
||||
reg = cr16_regptab + r;
|
||||
rreg = cr16_regptab + r;
|
||||
/* Register not found. */
|
||||
else
|
||||
{
|
||||
|
@ -1592,7 +1592,7 @@ getregp_image (reg r)
|
|||
return 0;
|
||||
}
|
||||
|
||||
reg_name = reg->name;
|
||||
reg_name = rreg->name;
|
||||
|
||||
/* Issue a error message when register pair is illegal. */
|
||||
#define RPAIR_IMAGE_ERR \
|
||||
|
@ -1600,10 +1600,10 @@ getregp_image (reg r)
|
|||
reg_name, ins_parse); \
|
||||
break;
|
||||
|
||||
switch (reg->type)
|
||||
switch (rreg->type)
|
||||
{
|
||||
case CR16_RP_REGTYPE:
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
default:
|
||||
RPAIR_IMAGE_ERR;
|
||||
}
|
||||
|
@ -1618,12 +1618,12 @@ getregp_image (reg r)
|
|||
static int
|
||||
getidxregp_image (reg r)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
char *reg_name;
|
||||
|
||||
/* Check whether the register is in registers table. */
|
||||
if (r < MAX_REG)
|
||||
reg = cr16_regptab + r;
|
||||
rreg = cr16_regptab + r;
|
||||
/* Register not found. */
|
||||
else
|
||||
{
|
||||
|
@ -1631,16 +1631,16 @@ getidxregp_image (reg r)
|
|||
return 0;
|
||||
}
|
||||
|
||||
reg_name = reg->name;
|
||||
reg_name = rreg->name;
|
||||
|
||||
/* Issue a error message when register pair is illegal. */
|
||||
#define IDX_RPAIR_IMAGE_ERR \
|
||||
as_bad (_("Illegal index register pair (`%s') in Instruction: `%s'"), \
|
||||
reg_name, ins_parse); \
|
||||
|
||||
if (reg->type == CR16_RP_REGTYPE)
|
||||
if (rreg->type == CR16_RP_REGTYPE)
|
||||
{
|
||||
switch (reg->image)
|
||||
switch (rreg->image)
|
||||
{
|
||||
case 0: return 0; break;
|
||||
case 2: return 1; break;
|
||||
|
@ -1665,12 +1665,12 @@ getidxregp_image (reg r)
|
|||
static int
|
||||
getprocreg_image (reg r)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
char *reg_name;
|
||||
|
||||
/* Check whether the register is in registers table. */
|
||||
if (r < MAX_PREG)
|
||||
reg = &cr16_pregtab[r - MAX_REG];
|
||||
rreg = &cr16_pregtab[r - MAX_REG];
|
||||
/* Register not found. */
|
||||
else
|
||||
{
|
||||
|
@ -1678,7 +1678,7 @@ getprocreg_image (reg r)
|
|||
return 0;
|
||||
}
|
||||
|
||||
reg_name = reg->name;
|
||||
reg_name = rreg->name;
|
||||
|
||||
/* Issue a error message when register pair is illegal. */
|
||||
#define PROCREG_IMAGE_ERR \
|
||||
|
@ -1686,10 +1686,10 @@ getprocreg_image (reg r)
|
|||
reg_name, ins_parse); \
|
||||
break;
|
||||
|
||||
switch (reg->type)
|
||||
switch (rreg->type)
|
||||
{
|
||||
case CR16_P_REGTYPE:
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
default:
|
||||
PROCREG_IMAGE_ERR;
|
||||
}
|
||||
|
@ -1703,7 +1703,7 @@ getprocreg_image (reg r)
|
|||
static int
|
||||
getprocregp_image (reg r)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
char *reg_name;
|
||||
int pregptab_disp = 0;
|
||||
|
||||
|
@ -1725,7 +1725,7 @@ getprocregp_image (reg r)
|
|||
pregptab_disp = 5; break;
|
||||
default: break;
|
||||
}
|
||||
reg = &cr16_pregptab[r - pregptab_disp];
|
||||
rreg = &cr16_pregptab[r - pregptab_disp];
|
||||
}
|
||||
/* Register not found. */
|
||||
else
|
||||
|
@ -1734,7 +1734,7 @@ getprocregp_image (reg r)
|
|||
return 0;
|
||||
}
|
||||
|
||||
reg_name = reg->name;
|
||||
reg_name = rreg->name;
|
||||
|
||||
/* Issue a error message when register pair is illegal. */
|
||||
#define PROCREGP_IMAGE_ERR \
|
||||
|
@ -1742,10 +1742,10 @@ getprocregp_image (reg r)
|
|||
reg_name, ins_parse); \
|
||||
break;
|
||||
|
||||
switch (reg->type)
|
||||
switch (rreg->type)
|
||||
{
|
||||
case CR16_P_REGTYPE:
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
default:
|
||||
PROCREGP_IMAGE_ERR;
|
||||
}
|
||||
|
|
|
@ -205,12 +205,12 @@ get_opflags (operand_type op)
|
|||
static reg
|
||||
get_register (char *reg_name)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
|
||||
reg = (const reg_entry *) hash_find (reg_hash, reg_name);
|
||||
rreg = (const reg_entry *) hash_find (reg_hash, reg_name);
|
||||
|
||||
if (reg != NULL)
|
||||
return reg->value.reg_val;
|
||||
if (rreg != NULL)
|
||||
return rreg->value.reg_val;
|
||||
else
|
||||
return nullregister;
|
||||
}
|
||||
|
@ -220,12 +220,12 @@ get_register (char *reg_name)
|
|||
static copreg
|
||||
get_copregister (char *copreg_name)
|
||||
{
|
||||
const reg_entry *copreg;
|
||||
const reg_entry *coreg;
|
||||
|
||||
copreg = (const reg_entry *) hash_find (copreg_hash, copreg_name);
|
||||
coreg = (const reg_entry *) hash_find (copreg_hash, copreg_name);
|
||||
|
||||
if (copreg != NULL)
|
||||
return copreg->value.copreg_val;
|
||||
if (coreg != NULL)
|
||||
return coreg->value.copreg_val;
|
||||
else
|
||||
return nullcopregister;
|
||||
}
|
||||
|
@ -1106,7 +1106,7 @@ get_cinv_parameters (char * operand)
|
|||
static int
|
||||
getreg_image (reg r)
|
||||
{
|
||||
const reg_entry *reg;
|
||||
const reg_entry *rreg;
|
||||
char *reg_name;
|
||||
int is_procreg = 0; /* Nonzero means argument should be processor reg. */
|
||||
|
||||
|
@ -1116,10 +1116,10 @@ getreg_image (reg r)
|
|||
|
||||
/* Check whether the register is in registers table. */
|
||||
if (r < MAX_REG)
|
||||
reg = &crx_regtab[r];
|
||||
rreg = &crx_regtab[r];
|
||||
/* Check whether the register is in coprocessor registers table. */
|
||||
else if (r < MAX_COPREG)
|
||||
reg = &crx_copregtab[r-MAX_REG];
|
||||
rreg = &crx_copregtab[r-MAX_REG];
|
||||
/* Register not found. */
|
||||
else
|
||||
{
|
||||
|
@ -1127,7 +1127,7 @@ getreg_image (reg r)
|
|||
return 0;
|
||||
}
|
||||
|
||||
reg_name = reg->name;
|
||||
reg_name = rreg->name;
|
||||
|
||||
/* Issue a error message when register is illegal. */
|
||||
#define IMAGE_ERR \
|
||||
|
@ -1135,29 +1135,29 @@ getreg_image (reg r)
|
|||
reg_name, ins_parse); \
|
||||
break;
|
||||
|
||||
switch (reg->type)
|
||||
switch (rreg->type)
|
||||
{
|
||||
case CRX_U_REGTYPE:
|
||||
if (is_procreg || (instruction->flags & USER_REG))
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
else
|
||||
IMAGE_ERR;
|
||||
|
||||
case CRX_CFG_REGTYPE:
|
||||
if (is_procreg)
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
else
|
||||
IMAGE_ERR;
|
||||
|
||||
case CRX_R_REGTYPE:
|
||||
if (! is_procreg)
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
else
|
||||
IMAGE_ERR;
|
||||
|
||||
case CRX_C_REGTYPE:
|
||||
case CRX_CS_REGTYPE:
|
||||
return reg->image;
|
||||
return rreg->image;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -1201,7 +1201,9 @@ find_opcode (struct d10v_opcode *opcode, expressionS myops[])
|
|||
for (i = 0; opcode->operands[i + 1]; i++)
|
||||
{
|
||||
int bits = d10v_operands[next_opcode->operands[opnum]].bits;
|
||||
int flags = d10v_operands[next_opcode->operands[opnum]].flags;
|
||||
|
||||
flags = d10v_operands[next_opcode->operands[opnum]].flags;
|
||||
|
||||
if (flags & OPERAND_ADDR)
|
||||
bits += 2;
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue