* elf32-mips.c: Add dvp support.

This commit is contained in:
Doug Evans 1998-01-29 20:58:50 +00:00
parent 847b962945
commit 3134a2bdac
2 changed files with 44 additions and 1 deletions

View File

@ -1,3 +1,9 @@
start-sanitize-sky
Thu Jan 29 17:44:53 1998 Doug Evans <devans@canuck.cygnus.com>
* elf32-mips.c: Add dvp support.
end-sanitize-sky
Thu Jan 29 15:55:35 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
* config.bfd (i[3456]-*-mingw32*): New target.

View File

@ -313,6 +313,10 @@ enum reloc_type
/* These relocs are used for the mips16. */
R_MIPS16_26 = 100,
R_MIPS16_GPREL = 101
/* start-sanitize-sky */
/* These relocs are for the dvp. */
, R_MIPS_DVP_11_PCREL = 120
/* end-sanitize-sky */
};
static reloc_howto_type elf_mips_howto_table[] =
@ -753,6 +757,24 @@ static reloc_howto_type elf_mips16_gprel_howto =
0xffff, /* dst_mask */
false); /* pcrel_offset */
/* start-sanitize-sky */
/* DVP relocations. */
static reloc_howto_type elf_mips_dvp_11_pcrel_howto =
HOWTO (R_MIPS_DVP_11_PCREL, /* type */
3, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
11, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_MIPS_DVP_11_PCREL", /* name */
true, /* partial_inplace */
0x7ff, /* src_mask */
0x7ff, /* dst_mask */
false); /* pcrel_offset */
/* end-sanitize-sky */
/* Do a R_MIPS_HI16 relocation. This has to be done in combination
with a R_MIPS_LO16 reloc, because there is a carry from the LO16 to
the HI16. Here we just save the information we need; we do the
@ -1550,6 +1572,10 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, code)
return &elf_mips16_jump_howto;
else if (code == BFD_RELOC_MIPS16_GPREL)
return &elf_mips16_gprel_howto;
/* start-sanitize-sky */
else if (code == BFD_RELOC_MIPS_DVP_11_PCREL)
return &elf_mips_dvp_11_pcrel_howto;
/* end-sanitize-sky */
return NULL;
}
@ -1569,6 +1595,10 @@ mips_info_to_howto_rel (abfd, cache_ptr, dst)
cache_ptr->howto = &elf_mips16_jump_howto;
else if (r_type == R_MIPS16_GPREL)
cache_ptr->howto = &elf_mips16_gprel_howto;
/* start-sanitize-sky */
else if (r_type == R_MIPS_DVP_11_PCREL)
cache_ptr->howto = &elf_mips_dvp_11_pcrel_howto;
/* end-sanitize-sky */
else
{
BFD_ASSERT (r_type < (unsigned int) R_MIPS_max);
@ -3013,6 +3043,11 @@ _bfd_mips_elf_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
{
asection *msec;
if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
filename_ptr, functionname_ptr,
line_ptr))
return true;
msec = bfd_get_section_by_name (abfd, ".mdebug");
if (msec != NULL)
{
@ -6370,7 +6405,9 @@ mips_elf_size_dynamic_sections (output_bfd, info)
outname = bfd_get_section_name (output_bfd,
s->output_section);
target = bfd_get_section_by_name (output_bfd, outname + 4);
if ((target != NULL && (target->flags & SEC_READONLY) != 0)
if ((target != NULL
&& (target->flags & SEC_READONLY) != 0
&& (target->flags & SEC_ALLOC) != 0)
|| strcmp (outname, ".rel.dyn") == 0)
reltext = true;