mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 12:23:31 +08:00
* config/tc-hppa.c (hppa_fix_struct): Use a real type for the
field selector, rather than an int. All uses of field selectors fixed. (tc_gen_reloc): For SOM PLABELs, always set addend to zero for now. (md_apply_fix_1): Do not call hppa_field_adjust for any PLABEL field.
This commit is contained in:
@ -1,8 +1,17 @@
|
|||||||
Thu Nov 11 15:49:08 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
|
Fri Nov 12 14:52:17 1993 Jeffrey A. Law (law@snake.cs.utah.edu
|
||||||
|
|
||||||
|
* config/tc-hppa.c (hppa_fix_struct): Use a real type for the
|
||||||
|
field selector, rather than an int. All uses of field selectors
|
||||||
|
fixed.
|
||||||
|
(tc_gen_reloc): For SOM PLABELs, always set addend to zero for now.
|
||||||
|
(md_apply_fix_1): Do not call hppa_field_adjust for any PLABEL
|
||||||
|
field.
|
||||||
|
|
||||||
|
Thu Nov 11 15:49:08 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||||
|
|
||||||
* config/tc-hppa.c (pa_type_args): For .import statements,
|
* config/tc-hppa.c (pa_type_args): For .import statements,
|
||||||
silently ignore attempt to change the symbol type for a function
|
silently ignore attempt to change the symbol type for a function
|
||||||
from ST_ENTRY to ST_CODE on .import
|
from ST_ENTRY to ST_CODE on .import.
|
||||||
|
|
||||||
Wed Nov 10 16:19:13 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
Wed Nov 10 16:19:13 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||||
|
|
||||||
|
@ -491,7 +491,7 @@ struct default_space_dict
|
|||||||
struct hppa_fix_struct
|
struct hppa_fix_struct
|
||||||
{
|
{
|
||||||
/* The field selector. */
|
/* The field selector. */
|
||||||
int fx_r_field;
|
enum hppa_reloc_field_selector_type fx_r_field;
|
||||||
|
|
||||||
/* Type of fixup. */
|
/* Type of fixup. */
|
||||||
int fx_r_type;
|
int fx_r_type;
|
||||||
@ -606,7 +606,8 @@ static unsigned int pa_subspace_start PARAMS ((sd_chain_struct *, int));
|
|||||||
static void pa_ip PARAMS ((char *));
|
static void pa_ip PARAMS ((char *));
|
||||||
static void fix_new_hppa PARAMS ((fragS *, int, short int, symbolS *,
|
static void fix_new_hppa PARAMS ((fragS *, int, short int, symbolS *,
|
||||||
long, expressionS *, int,
|
long, expressionS *, int,
|
||||||
bfd_reloc_code_real_type, long,
|
bfd_reloc_code_real_type,
|
||||||
|
enum hppa_reloc_field_selector_type,
|
||||||
int, long, char *));
|
int, long, char *));
|
||||||
static void md_apply_fix_1 PARAMS ((fixS *, long));
|
static void md_apply_fix_1 PARAMS ((fixS *, long));
|
||||||
static int is_end_of_statement PARAMS ((void));
|
static int is_end_of_statement PARAMS ((void));
|
||||||
@ -1320,7 +1321,7 @@ fix_new_hppa (frag, where, size, add_symbol, offset, exp, pcrel,
|
|||||||
expressionS *exp;
|
expressionS *exp;
|
||||||
int pcrel;
|
int pcrel;
|
||||||
bfd_reloc_code_real_type r_type;
|
bfd_reloc_code_real_type r_type;
|
||||||
long r_field;
|
enum hppa_reloc_field_selector_type r_field;
|
||||||
int r_format;
|
int r_format;
|
||||||
long arg_reloc;
|
long arg_reloc;
|
||||||
char *unwind_desc;
|
char *unwind_desc;
|
||||||
@ -2857,7 +2858,6 @@ tc_gen_reloc (section, fixp)
|
|||||||
reloc->sym_ptr_ptr = &fixp->fx_addsy->bsym;
|
reloc->sym_ptr_ptr = &fixp->fx_addsy->bsym;
|
||||||
reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
|
reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
|
||||||
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where ;
|
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where ;
|
||||||
reloc->addend = 0;
|
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
@ -2865,6 +2865,17 @@ tc_gen_reloc (section, fixp)
|
|||||||
case R_ABS_CALL:
|
case R_ABS_CALL:
|
||||||
reloc->addend = HPPA_R_ADDEND (hppa_fixp->fx_arg_reloc, 0);
|
reloc->addend = HPPA_R_ADDEND (hppa_fixp->fx_arg_reloc, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case R_DATA_PLABEL:
|
||||||
|
case R_CODE_PLABEL:
|
||||||
|
/* For plabel relocations, the addend of the
|
||||||
|
relocation should be either 0 (no static link) or 2
|
||||||
|
(static link required).
|
||||||
|
|
||||||
|
FIXME: We always assume no static link! */
|
||||||
|
reloc->addend = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
reloc->addend = fixp->fx_addnumber;
|
reloc->addend = fixp->fx_addnumber;
|
||||||
break;
|
break;
|
||||||
@ -3037,7 +3048,9 @@ md_apply_fix_1 (fixP, val)
|
|||||||
&& fixP->fx_subsy->bsym->section == &bfd_und_section))
|
&& fixP->fx_subsy->bsym->section == &bfd_und_section))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (fmt != 0 && fmt != 32)
|
if (fmt != 0 && hppa_fixP->fx_r_field != R_HPPA_PSEL
|
||||||
|
&& hppa_fixP->fx_r_field != R_HPPA_LPSEL
|
||||||
|
&& hppa_fixP->fx_r_field != R_HPPA_RPSEL)
|
||||||
new_val = hppa_field_adjust (val, 0, hppa_fixP->fx_r_field);
|
new_val = hppa_field_adjust (val, 0, hppa_fixP->fx_r_field);
|
||||||
else
|
else
|
||||||
new_val = 0;
|
new_val = 0;
|
||||||
|
Reference in New Issue
Block a user