* coff-h8300.c: Fix formatting.

* elf32-h8300.c: Likewise.
	* reloc16.c: Likewise.
This commit is contained in:
Kazu Hirata 2002-11-11 05:05:22 +00:00
parent 01ad7f3617
commit bc7eab726b
4 changed files with 141 additions and 140 deletions

View File

@ -1,3 +1,9 @@
2002-11-11 Kazu Hirata <kazu@cs.umass.edu>
* coff-h8300.c: Fix formatting.
* elf32-h8300.c: Likewise.
* reloc16.c: Likewise.
2002-11-09 Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
* elf32-arm.h (elf32_arm_size_dynamic_sections): Don't strip output

View File

@ -87,8 +87,7 @@ static boolean h8300_bfd_link_add_symbols PARAMS ((bfd *, struct bfd_link_info *
the generic linker hash table, not the COFF backend linker hash
table! We use this to attach additional data structures we
need while linking on the h8300. */
struct h8300_coff_link_hash_table
{
struct h8300_coff_link_hash_table {
/* The main hash table. */
struct generic_link_hash_table root;
@ -135,7 +134,7 @@ funcvec_hash_newfunc (entry, gen_table, string)
/* Call the allocation method of the superclass. */
ret = ((struct funcvec_hash_entry *)
bfd_hash_newfunc ((struct bfd_hash_entry *) ret, gen_table, string));
bfd_hash_newfunc ((struct bfd_hash_entry *) ret, gen_table, string));
if (ret == NULL)
return NULL;
@ -165,8 +164,8 @@ funcvec_hash_table_init (table, abfd, newfunc)
struct funcvec_hash_table *table;
bfd *abfd;
struct bfd_hash_entry *(*newfunc) PARAMS ((struct bfd_hash_entry *,
struct bfd_hash_table *,
const char *));
struct bfd_hash_table *,
const char *));
{
/* Initialize our local fields, then call the generic initialization
routine. */
@ -232,8 +231,7 @@ special (abfd, reloc_entry, symbol, data, input_section, output_bfd,
return bfd_reloc_ok;
}
static reloc_howto_type howto_table[] =
{
static reloc_howto_type howto_table[] = {
HOWTO (R_RELBYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, special, "8", false, 0x000000ff, 0x000000ff, false),
HOWTO (R_RELWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, special, "16", false, 0x0000ffff, 0x0000ffff, false),
HOWTO (R_RELLONG, 0, 2, 32, false, 0, complain_overflow_bitfield, special, "32", false, 0xffffffff, 0xffffffff, false),
@ -270,9 +268,9 @@ static reloc_howto_type howto_table[] =
/* Turn a howto into a reloc number. */
#define SELECT_RELOC(x,howto) \
{ x.r_type = select_reloc(howto); }
{ x.r_type = select_reloc (howto); }
#define BADMAG(x) (H8300BADMAG(x) && H8300HBADMAG(x) && H8300SBADMAG(x))
#define BADMAG(x) (H8300BADMAG (x) && H8300HBADMAG (x) && H8300SBADMAG (x))
#define H8300 1 /* Customize coffcode.h */
#define __A_MAGIC_SET__
@ -365,15 +363,15 @@ rtype2howto (internal, dst)
}
}
#define RTYPE2HOWTO(internal, relocentry) rtype2howto(internal,relocentry)
#define RTYPE2HOWTO(internal, relocentry) rtype2howto (internal, relocentry)
/* Perform any necessary magic to the addend in a reloc entry. */
#define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \
cache_ptr->addend = ext_reloc.r_offset;
cache_ptr->addend = ext_reloc.r_offset;
#define RELOC_PROCESSING(relent,reloc,symbols,abfd,section) \
reloc_processing(relent, reloc, symbols, abfd, section)
reloc_processing (relent, reloc, symbols, abfd, section)
static void
reloc_processing (relent, reloc, symbols, abfd, section)
@ -483,7 +481,7 @@ h8300_reloc16_estimate (abfd, input_section, reloc, shrink, link_info)
/* If the distance is within -128..+128 inclusive, then we can relax
this jump. +128 is valid since the target will move two bytes
closer if we do relax this branch. */
if ((int)gap >= -128 && (int)gap <= 128 )
if ((int) gap >= -128 && (int) gap <= 128)
{
/* It's possible we may be able to eliminate this branch entirely;
if the previous instruction is a branch around this instruction,
@ -546,7 +544,7 @@ h8300_reloc16_estimate (abfd, input_section, reloc, shrink, link_info)
/* If the distance is within -128..+128 inclusive, then we can relax
this jump. +128 is valid since the target will move two bytes
closer if we do relax this branch. */
if ((int)gap >= -128 && (int)gap <= 128 )
if ((int) gap >= -128 && (int) gap <= 128)
{
/* Change the reloc type. */
reloc->howto = howto_table + 15;
@ -736,7 +734,7 @@ h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
/* Sanity check. */
if (value <= 0xff
|| (value >= 0x0000ff00 && value <= 0x0000ffff)
|| (value >= 0x00ffff00 && value <= 0x00ffffff)
|| (value >= 0x00ffff00 && value <= 0x00ffffff)
|| (value >= 0xffffff00 && value <= 0xffffffff))
{
/* Everything looks OK. Apply the relocation and update the
@ -804,7 +802,7 @@ h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
/* Fix the opcode. For all the move insns, we simply
need to turn off bit 0x20 in the previous byte. */
data[dst_address - 1] &= ~0x20;
data[dst_address - 1] &= ~0x20;
dst_address += 2;
src_address += 4;
}
@ -815,7 +813,7 @@ h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
}
break;
/* A 16bit absolute branch that is now an 8-bit pc-relative branch. */
@ -912,14 +910,14 @@ h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
abort ();
}
/* Output the target. */
bfd_put_8 (abfd, gap, data + dst_address - 1);
/* Output the target. */
bfd_put_8 (abfd, gap, data + dst_address - 1);
/* We don't advance dst_address -- the 8bit reloc is applied at
dst_address - 1, so the next insn should begin at dst_address. */
src_address += 2;
/* We don't advance dst_address -- the 8bit reloc is applied at
dst_address - 1, so the next insn should begin at dst_address. */
src_address += 2;
break;
break;
/* Similarly for a 24bit absolute that is now 8 bits. */
case R_JMPL2:

View File

@ -61,8 +61,7 @@ static bfd_reloc_status_type special
/* This does not include any relocation information, but should be
good enough for GDB or objdump to read the file. */
static reloc_howto_type h8_elf_howto_table[] =
{
static reloc_howto_type h8_elf_howto_table[] = {
#define R_H8_NONE_X 0
HOWTO (R_H8_NONE, /* type */
0, /* rightshift */
@ -221,16 +220,14 @@ static reloc_howto_type h8_elf_howto_table[] =
/* This structure is used to map BFD reloc codes to H8 ELF relocs. */
struct elf_reloc_map
{
struct elf_reloc_map {
bfd_reloc_code_real_type bfd_reloc_val;
unsigned char howto_index;
};
/* An array mapping BFD reloc codes to SH ELF relocs. */
static const struct elf_reloc_map h8_reloc_map[] =
{
static const struct elf_reloc_map h8_reloc_map[] = {
{ BFD_RELOC_NONE, R_H8_NONE_X },
{ BFD_RELOC_32, R_H8_DIR32_X },
{ BFD_RELOC_16, R_H8_DIR16_X },
@ -271,7 +268,7 @@ elf32_h8_info_to_howto (abfd, bfd_reloc, elf_reloc)
r = ELF32_R_TYPE (elf_reloc->r_info);
for (i = 0; i < sizeof (h8_elf_howto_table) / sizeof (reloc_howto_type); i++)
if (h8_elf_howto_table[i].type== r)
if (h8_elf_howto_table[i].type == r)
{
bfd_reloc->howto = &h8_elf_howto_table[i];
return;
@ -870,11 +867,10 @@ elf32_h8_relax_section (abfd, sec, link_info, again)
= ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
ELF32_R_TYPE (R_H8_NONE));
last_reloc->r_info
last_reloc->r_info
= ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
ELF32_R_TYPE (R_H8_PCREL8));
last_reloc->r_addend = irel->r_addend;
ELF32_R_TYPE (R_H8_PCREL8));
last_reloc->r_addend = irel->r_addend;
code = bfd_get_8 (abfd,
contents + last_reloc->r_offset - 1);
@ -938,18 +934,18 @@ elf32_h8_relax_section (abfd, sec, link_info, again)
/* If the distance is within -126..+130 inclusive, then we can
relax this jump. +130 is valid since the target will move
two bytes closer if we do relax this branch. */
if ((int)gap >= -126 && (int)gap <= 130)
if ((int) gap >= -126 && (int) gap <= 130)
{
unsigned char code;
unsigned char code;
/* Note that we've changed the relocs, section contents,
/* Note that we've changed the relocs, section contents,
etc. */
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
symtab_hdr->contents = (unsigned char *) isymbuf;
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
if (code == 0x58)
{
@ -967,18 +963,18 @@ elf32_h8_relax_section (abfd, sec, link_info, again)
abort ();
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
R_H8_PCREL8);
irel->r_offset--;
irel->r_offset--;
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec,
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec,
irel->r_offset + 1, 2))
goto error_return;
/* That will change things, so, we should relax again.
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
*again = true;
*again = true;
}
break;
}
@ -990,53 +986,53 @@ elf32_h8_relax_section (abfd, sec, link_info, again)
bfd_vma value = symval + irel->r_addend;
if ((bfd_get_mach (abfd) == bfd_mach_h8300
&& value >= 0xff00
&& value <= 0xffff)
|| ((bfd_get_mach (abfd) == bfd_mach_h8300h
&& value >= 0xff00
&& value <= 0xffff)
|| ((bfd_get_mach (abfd) == bfd_mach_h8300h
|| bfd_get_mach (abfd) == bfd_mach_h8300s)
&& value >= 0xffff00
&& value <= 0xffffff))
{
unsigned char code;
unsigned char code;
/* Note that we've changed the relocs, section contents,
/* Note that we've changed the relocs, section contents,
etc. */
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
symtab_hdr->contents = (unsigned char *) isymbuf;
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
/* Sanity check. */
if (code != 0x6a)
/* Sanity check. */
if (code != 0x6a)
abort ();
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
if ((code & 0xf0) == 0x00)
if ((code & 0xf0) == 0x00)
bfd_put_8 (abfd,
(code & 0xf) | 0x20,
contents + irel->r_offset - 2);
else if ((code & 0xf0) == 0x80)
contents + irel->r_offset - 2);
else if ((code & 0xf0) == 0x80)
bfd_put_8 (abfd,
(code & 0xf) | 0x30,
contents + irel->r_offset - 2);
else
contents + irel->r_offset - 2);
else
abort ();
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
R_H8_DIR8);
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec,
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec,
irel->r_offset + 1, 2))
goto error_return;
/* That will change things, so, we should relax again.
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
*again = true;
*again = true;
}
break;
}
@ -1048,52 +1044,52 @@ elf32_h8_relax_section (abfd, sec, link_info, again)
bfd_vma value = symval + irel->r_addend;
if ((bfd_get_mach (abfd) == bfd_mach_h8300
&& value >= 0xff00
&& value <= 0xffff)
|| ((bfd_get_mach (abfd) == bfd_mach_h8300h
&& value >= 0xff00
&& value <= 0xffff)
|| ((bfd_get_mach (abfd) == bfd_mach_h8300h
|| bfd_get_mach (abfd) == bfd_mach_h8300s)
&& value >= 0xffff00
&& value <= 0xffffff))
{
unsigned char code;
unsigned char code;
/* Note that we've changed the relocs, section contents,
/* Note that we've changed the relocs, section contents,
etc. */
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
symtab_hdr->contents = (unsigned char *) isymbuf;
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
/* Sanity check. */
if (code != 0x6a)
/* Sanity check. */
if (code != 0x6a)
abort ();
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
if ((code & 0xf0) == 0x00)
if ((code & 0xf0) == 0x00)
bfd_put_8 (abfd,
(code & 0xf) | 0x20,
contents + irel->r_offset - 2);
else if ((code & 0xf0) == 0x80)
contents + irel->r_offset - 2);
else if ((code & 0xf0) == 0x80)
bfd_put_8 (abfd,
(code & 0xf) | 0x30,
contents + irel->r_offset - 2);
else
contents + irel->r_offset - 2);
else
abort ();
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
R_H8_DIR8);
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec, irel->r_offset, 2))
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec, irel->r_offset, 2))
goto error_return;
/* That will change things, so, we should relax again.
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
*again = true;
*again = true;
}
}
@ -1107,34 +1103,34 @@ elf32_h8_relax_section (abfd, sec, link_info, again)
if (value <= 0x7fff || value >= 0xff8000)
{
unsigned char code;
unsigned char code;
/* Note that we've changed the relocs, section contents,
/* Note that we've changed the relocs, section contents,
etc. */
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
elf_section_data (sec)->relocs = internal_relocs;
elf_section_data (sec)->this_hdr.contents = contents;
symtab_hdr->contents = (unsigned char *) isymbuf;
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
/* We just need to turn off bit 0x20. */
code &= ~0x20;
/* We just need to turn off bit 0x20. */
code &= ~0x20;
bfd_put_8 (abfd, code, contents + irel->r_offset - 1);
bfd_put_8 (abfd, code, contents + irel->r_offset - 1);
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
R_H8_DIR16A8);
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec,
/* Delete two bytes of data. */
if (!elf32_h8_relax_delete_bytes (abfd, sec,
irel->r_offset + 1, 2))
goto error_return;
/* That will change things, so, we should relax again.
/* That will change things, so, we should relax again.
Note that this is not required, and it may be slow. */
*again = true;
*again = true;
}
break;
}

View File

@ -199,30 +199,31 @@ bfd_coff_reloc16_relax_section (abfd, input_section, link_info, again)
shrinks = (unsigned *) bfd_zmalloc (amt);
/* Loop until nothing changes in this section. */
do {
arelent **parent;
unsigned int i;
long j;
do
{
arelent **parent;
unsigned int i;
long j;
another_pass = 0;
another_pass = 0;
for (i = 0, parent = reloc_vector; *parent; parent++, i++)
{
/* Let the target/machine dependent code examine each reloc
in this section and attempt to shrink it. */
shrink = bfd_coff_reloc16_estimate (abfd, input_section, *parent,
shrinks[i], link_info);
for (i = 0, parent = reloc_vector; *parent; parent++, i++)
{
/* Let the target/machine dependent code examine each reloc
in this section and attempt to shrink it. */
shrink = bfd_coff_reloc16_estimate (abfd, input_section, *parent,
shrinks[i], link_info);
/* If it shrunk, note it in the shrinks array and set up for
another pass. */
if (shrink != shrinks[i])
{
another_pass = 1;
for (j = i + 1; j <= reloc_count; j++)
shrinks[j] += shrink - shrinks[i];
}
}
}
/* If it shrunk, note it in the shrinks array and set up for
another pass. */
if (shrink != shrinks[i])
{
another_pass = 1;
for (j = i + 1; j <= reloc_count; j++)
shrinks[j] += shrink - shrinks[i];
}
}
}
while (another_pass);
shrink = shrinks[reloc_count];
@ -235,12 +236,12 @@ bfd_coff_reloc16_relax_section (abfd, input_section, link_info, again)
}
bfd_byte *
bfd_coff_reloc16_get_relocated_section_contents(in_abfd,
link_info,
link_order,
data,
relocateable,
symbols)
bfd_coff_reloc16_get_relocated_section_contents (in_abfd,
link_info,
link_order,
data,
relocateable,
symbols)
bfd *in_abfd;
struct bfd_link_info *link_info;
struct bfd_link_order *link_order;
@ -266,11 +267,11 @@ bfd_coff_reloc16_get_relocated_section_contents(in_abfd,
symbols);
/* Read in the section. */
if (!bfd_get_section_contents(input_bfd,
input_section,
data,
(bfd_vma) 0,
input_section->_raw_size))
if (!bfd_get_section_contents (input_bfd,
input_section,
data,
(bfd_vma) 0,
input_section->_raw_size))
return NULL;
reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size);