mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
Thu Mar 24 11:33:46 1994 Steve Chamberlain (sac@jonny.cygnus.com)
* coff-h8300.c (h8300_reloc16_extra_cases): Add relaxing info for 16bit relative branches. * coff-h8500.c (r_high8, r_low16, r_high16): Don't complain on overflow.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
Thu Mar 24 11:33:46 1994 Steve Chamberlain (sac@jonny.cygnus.com)
|
||||||
|
|
||||||
|
* coff-h8300.c (h8300_reloc16_extra_cases): Add relaxing info
|
||||||
|
for 16bit relative branches.
|
||||||
|
* coff-h8500.c (r_high8, r_low16, r_high16): Don't complain on
|
||||||
|
overflow.
|
||||||
|
|
||||||
Thu Mar 24 09:21:13 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
|
Thu Mar 24 09:21:13 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||||
|
|
||||||
* som.c (som_bfd_prep_for_ar_write): Ignore non-SOM objects.
|
* som.c (som_bfd_prep_for_ar_write): Ignore non-SOM objects.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* BFD back-end for Hitachi H8/300 COFF binaries.
|
/* BFD back-end for Hitachi H8/300 COFF binaries.
|
||||||
Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
|
Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
|
||||||
Written by Steve Chamberlain, <sac@cygnus.com>.
|
Written by Steve Chamberlain, <sac@cygnus.com>.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -53,7 +53,7 @@ static reloc_howto_type howto_table[] =
|
|||||||
/* Turn a howto into a reloc number */
|
/* Turn a howto into a reloc number */
|
||||||
|
|
||||||
#define SELECT_RELOC(x,howto) \
|
#define SELECT_RELOC(x,howto) \
|
||||||
{ x = select_reloc(howto); }
|
{ x.r_type = select_reloc(howto); }
|
||||||
|
|
||||||
#define BADMAG(x) (H8300BADMAG(x)&& H8300HBADMAG(x))
|
#define BADMAG(x) (H8300BADMAG(x)&& H8300HBADMAG(x))
|
||||||
#define H8300 1 /* Customize coffcode.h */
|
#define H8300 1 /* Customize coffcode.h */
|
||||||
@ -148,12 +148,12 @@ rtype2howto (internal, dst)
|
|||||||
reloc_processing(relent, reloc, symbols, abfd, section)
|
reloc_processing(relent, reloc, symbols, abfd, section)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
DEFUN (reloc_processing, (relent, reloc, symbols, abfd, section),
|
reloc_processing (relent, reloc, symbols, abfd, section)
|
||||||
arelent * relent AND
|
arelent * relent;
|
||||||
struct internal_reloc *reloc AND
|
struct internal_reloc *reloc;
|
||||||
asymbol ** symbols AND
|
asymbol ** symbols;
|
||||||
bfd * abfd AND
|
bfd * abfd;
|
||||||
asection * section)
|
asection * section;
|
||||||
{
|
{
|
||||||
relent->address = reloc->r_vaddr;
|
relent->address = reloc->r_vaddr;
|
||||||
rtype2howto (relent, reloc);
|
rtype2howto (relent, reloc);
|
||||||
@ -177,9 +177,9 @@ DEFUN (reloc_processing, (relent, reloc, symbols, abfd, section),
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
h8300_reloc16_estimate(input_section, symbols, reloc, shrink, link_info)
|
h8300_reloc16_estimate(abfd, input_section, reloc, shrink, link_info)
|
||||||
|
bfd *abfd;
|
||||||
asection *input_section;
|
asection *input_section;
|
||||||
asymbol **symbols;
|
|
||||||
arelent *reloc;
|
arelent *reloc;
|
||||||
unsigned int shrink;
|
unsigned int shrink;
|
||||||
struct bfd_link_info *link_info;
|
struct bfd_link_info *link_info;
|
||||||
@ -218,7 +218,7 @@ h8300_reloc16_estimate(input_section, symbols, reloc, shrink, link_info)
|
|||||||
/* The place to relc moves back by one */
|
/* The place to relc moves back by one */
|
||||||
/* This will be two bytes smaller in the long run */
|
/* This will be two bytes smaller in the long run */
|
||||||
shrink +=2 ;
|
shrink +=2 ;
|
||||||
bfd_perform_slip(symbols, 2, input_section, address);
|
bfd_perform_slip(abfd, 2, input_section, address);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -246,7 +246,7 @@ h8300_reloc16_estimate(input_section, symbols, reloc, shrink, link_info)
|
|||||||
reloc->howto = reloc->howto + 1;
|
reloc->howto = reloc->howto + 1;
|
||||||
/* This will be two bytes smaller in the long run */
|
/* This will be two bytes smaller in the long run */
|
||||||
shrink +=2 ;
|
shrink +=2 ;
|
||||||
bfd_perform_slip(symbols, 2, input_section, address);
|
bfd_perform_slip(abfd, 2, input_section, address);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ h8300_reloc16_estimate(input_section, symbols, reloc, shrink, link_info)
|
|||||||
|
|
||||||
/* This will be two bytes smaller in the long run */
|
/* This will be two bytes smaller in the long run */
|
||||||
shrink +=2 ;
|
shrink +=2 ;
|
||||||
bfd_perform_slip(symbols, 2, input_section, address);
|
bfd_perform_slip(abfd, 2, input_section, address);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -334,6 +334,28 @@ h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
|
|||||||
dst_address++;
|
dst_address++;
|
||||||
src_address++;
|
src_address++;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case R_PCRWORD:
|
||||||
|
{
|
||||||
|
bfd_vma dot = link_order->offset
|
||||||
|
+ dst_address
|
||||||
|
+ link_order->u.indirect.section->output_section->vma;
|
||||||
|
int gap = (bfd_coff_reloc16_get_value (reloc, link_info, input_section)
|
||||||
|
- dot) + 1;
|
||||||
|
if (gap > 32767 || gap < -32768)
|
||||||
|
{
|
||||||
|
if (! ((*link_info->callbacks->reloc_overflow)
|
||||||
|
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||||
|
reloc->howto->name, reloc->addend, input_section->owner,
|
||||||
|
input_section, reloc->address)))
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
bfd_put_16 (abfd, gap, data + dst_address);
|
||||||
|
dst_address+=2;
|
||||||
|
src_address+=2;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* BFD back-end for Hitachi H8/500 COFF binaries.
|
/* BFD back-end for Hitachi H8/500 COFF binaries.
|
||||||
Copyright 1993 Free Software Foundation, Inc.
|
Copyright 1993, 1994 Free Software Foundation, Inc.
|
||||||
Contributed by Cygnus Support.
|
Contributed by Cygnus Support.
|
||||||
Written by Steve Chamberlain, <sac@cygnus.com>.
|
Written by Steve Chamberlain, <sac@cygnus.com>.
|
||||||
|
|
||||||
@ -47,11 +47,11 @@ HOWTO (R_H8500_IMM32, 0, 1, 32, false, 0,
|
|||||||
|
|
||||||
static reloc_howto_type r_high8 =
|
static reloc_howto_type r_high8 =
|
||||||
HOWTO (R_H8500_HIGH8, 0, 1, 8, false, 0,
|
HOWTO (R_H8500_HIGH8, 0, 1, 8, false, 0,
|
||||||
complain_overflow_bitfield, 0, "r_high8", true, 0x000000ff, 0x000000ff, false);
|
complain_overflow_dont, 0, "r_high8", true, 0x000000ff, 0x000000ff, false);
|
||||||
|
|
||||||
static reloc_howto_type r_low16 =
|
static reloc_howto_type r_low16 =
|
||||||
HOWTO (R_H8500_LOW16, 0, 1, 16, false, 0,
|
HOWTO (R_H8500_LOW16, 0, 1, 16, false, 0,
|
||||||
complain_overflow_bitfield, 0, "r_low16", true, 0x0000ffff, 0x0000ffff, false);
|
complain_overflow_dont, 0, "r_low16", true, 0x0000ffff, 0x0000ffff, false);
|
||||||
|
|
||||||
static reloc_howto_type r_pcrel8 =
|
static reloc_howto_type r_pcrel8 =
|
||||||
HOWTO (R_H8500_PCREL8, 0, 1, 8, true, 0, complain_overflow_signed, 0, "r_pcrel8", true, 0, 0, true);
|
HOWTO (R_H8500_PCREL8, 0, 1, 8, true, 0, complain_overflow_signed, 0, "r_pcrel8", true, 0, 0, true);
|
||||||
@ -62,7 +62,7 @@ HOWTO (R_H8500_PCREL16, 0, 1, 16, true, 0, complain_overflow_signed, 0, "r_pcrel
|
|||||||
|
|
||||||
static reloc_howto_type r_high16 =
|
static reloc_howto_type r_high16 =
|
||||||
HOWTO (R_H8500_HIGH16, 0, 1, 8, false, 0,
|
HOWTO (R_H8500_HIGH16, 0, 1, 8, false, 0,
|
||||||
complain_overflow_bitfield, 0, "r_high16", true, 0x000ffff, 0x0000ffff, false);
|
complain_overflow_dont, 0, "r_high16", true, 0x000ffff, 0x0000ffff, false);
|
||||||
|
|
||||||
|
|
||||||
/* Turn a howto into a reloc number */
|
/* Turn a howto into a reloc number */
|
||||||
@ -74,7 +74,7 @@ coff_h8500_select_reloc (howto)
|
|||||||
return howto->type;
|
return howto->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SELECT_RELOC(x,howto) x= coff_h8500_select_reloc(howto)
|
#define SELECT_RELOC(x,howto) x.r_type = coff_h8500_select_reloc(howto)
|
||||||
|
|
||||||
|
|
||||||
#define BADMAG(x) H8500BADMAG(x)
|
#define BADMAG(x) H8500BADMAG(x)
|
||||||
|
Reference in New Issue
Block a user