mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 23:39:35 +08:00
2000-09-25 Kazu Hirata <kazu@hxi.com>
* config/tc-cris.c: Fix formatting. * config/tc-d10v.h: Likewise. * config/tc-d30v.c: Likewise. * config/tc-d30v.h: Likewise. * config/tc-fr30.c: Likewise. * config/tc-fr30.h: Likewise. * config/tc-m68k.c: Likewise. * config/tc-m68k.h: Likewise. * config/tc-pj.h: Likewise. * config/tc-ppc.c: Likewise. * config/tc-ppc.h: Likewise. * config/tc-sh.c: Likewise. * config/tc-sh.h: Likewise. * config/tc-sparc.c: Likewise. * config/tc-v850.h: Likewise. * config/tc-vax.h: Likewise. * config/tc-w65.h: Likewise. * config/tc-z8k.h: Likewise.
This commit is contained in:
@ -1,3 +1,24 @@
|
|||||||
|
2000-09-25 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
|
* config/tc-cris.c: Fix formatting.
|
||||||
|
* config/tc-d10v.h: Likewise.
|
||||||
|
* config/tc-d30v.c: Likewise.
|
||||||
|
* config/tc-d30v.h: Likewise.
|
||||||
|
* config/tc-fr30.c: Likewise.
|
||||||
|
* config/tc-fr30.h: Likewise.
|
||||||
|
* config/tc-m68k.c: Likewise.
|
||||||
|
* config/tc-m68k.h: Likewise.
|
||||||
|
* config/tc-pj.h: Likewise.
|
||||||
|
* config/tc-ppc.c: Likewise.
|
||||||
|
* config/tc-ppc.h: Likewise.
|
||||||
|
* config/tc-sh.c: Likewise.
|
||||||
|
* config/tc-sh.h: Likewise.
|
||||||
|
* config/tc-sparc.c: Likewise.
|
||||||
|
* config/tc-v850.h: Likewise.
|
||||||
|
* config/tc-vax.h: Likewise.
|
||||||
|
* config/tc-w65.h: Likewise.
|
||||||
|
* config/tc-z8k.h: Likewise.
|
||||||
|
|
||||||
2000-09-23 Alan Modra <alan@linuxcare.com.au>
|
2000-09-23 Alan Modra <alan@linuxcare.com.au>
|
||||||
|
|
||||||
* config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak
|
* config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak
|
||||||
|
@ -1199,7 +1199,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
|
|||||||
prefix.
|
prefix.
|
||||||
|
|
||||||
The difference to 's' is that this does not allow an
|
The difference to 's' is that this does not allow an
|
||||||
"immediate" expression. */
|
"immediate" expression. */
|
||||||
if (! get_autoinc_prefix_or_indir_op (&s, prefixp,
|
if (! get_autoinc_prefix_or_indir_op (&s, prefixp,
|
||||||
&mode, ®no,
|
&mode, ®no,
|
||||||
&imm_expr_found,
|
&imm_expr_found,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-d10v.h -- Header file for tc-d10v.c.
|
/* tc-d10v.h -- Header file for tc-d10v.c.
|
||||||
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
|
||||||
Written by Martin Hunt, Cygnus Support.
|
Written by Martin Hunt, Cygnus Support.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
@ -17,7 +17,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to the Free
|
along with GAS; see the file COPYING. If not, write to the Free
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
#include "write.h" /* For the definition of fixS. */
|
#include "write.h" /* For the definition of fixS. */
|
||||||
|
|
||||||
@ -37,7 +37,7 @@
|
|||||||
#define MD_APPLY_FIX3
|
#define MD_APPLY_FIX3
|
||||||
|
|
||||||
/* call md_pcrel_from_section, not md_pcrel_from */
|
/* call md_pcrel_from_section, not md_pcrel_from */
|
||||||
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
|
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
|
||||||
long md_pcrel_from_section PARAMS ((fixS *, segT));
|
long md_pcrel_from_section PARAMS ((fixS *, segT));
|
||||||
|
|
||||||
/* Permit temporary numeric labels. */
|
/* Permit temporary numeric labels. */
|
||||||
|
@ -434,7 +434,7 @@ postfix (p)
|
|||||||
*p = ' ';
|
*p = ' ';
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*p == '+')
|
if (*p == '+')
|
||||||
{
|
{
|
||||||
*p = ' ';
|
*p = ' ';
|
||||||
@ -502,7 +502,7 @@ get_operands (exp, cmp_hack)
|
|||||||
{
|
{
|
||||||
while (*p == ' ' || *p == '\t' || *p == ',')
|
while (*p == ' ' || *p == '\t' || *p == ',')
|
||||||
p++;
|
p++;
|
||||||
|
|
||||||
if (*p == 0 || *p == '\n' || *p == '\r')
|
if (*p == 0 || *p == '\n' || *p == '\r')
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -571,7 +571,7 @@ get_operands (exp, cmp_hack)
|
|||||||
}
|
}
|
||||||
|
|
||||||
exp[numops].X_op = 0;
|
exp[numops].X_op = 0;
|
||||||
|
|
||||||
return numops;
|
return numops;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -669,7 +669,7 @@ build_insn (opcode, opers)
|
|||||||
else
|
else
|
||||||
insn |= number << shift;
|
insn |= number << shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
return insn;
|
return insn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -700,7 +700,7 @@ write_long (opcode, insn, fx)
|
|||||||
fx->fix[i].reloc);
|
fx->fix[i].reloc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fx->fc = 0;
|
fx->fc = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -765,7 +765,7 @@ write_1_short (opcode, insn, fx, use_sequential)
|
|||||||
fx->fix[i].reloc);
|
fx->fix[i].reloc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fx->fc = 0;
|
fx->fc = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1017,7 +1017,7 @@ parallel_ok (op1, insn1, op2, insn2, exec_type)
|
|||||||
ecc = op2->ecc;
|
ecc = op2->ecc;
|
||||||
ins = insn2;
|
ins = insn2;
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_reg[j] = 0;
|
flag_reg[j] = 0;
|
||||||
mod_reg[j][0] = mod_reg[j][1] = 0;
|
mod_reg[j][0] = mod_reg[j][1] = 0;
|
||||||
used_reg[j][0] = used_reg[j][1] = 0;
|
used_reg[j][0] = used_reg[j][1] = 0;
|
||||||
@ -1274,7 +1274,7 @@ md_assemble (str)
|
|||||||
extype = EXEC_REVSEQ;
|
extype = EXEC_REVSEQ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* STR2 points to the separator, if one. */
|
/* STR2 points to the separator, if one. */
|
||||||
if (str2)
|
if (str2)
|
||||||
{
|
{
|
||||||
@ -1975,9 +1975,9 @@ md_apply_fix3 (fixp, valuep, seg)
|
|||||||
|
|
||||||
case BFD_RELOC_D30V_32_PCREL:
|
case BFD_RELOC_D30V_32_PCREL:
|
||||||
insn2 = bfd_getb32 ((unsigned char *) where + 4);
|
insn2 = bfd_getb32 ((unsigned char *) where + 4);
|
||||||
insn |= (value >> 26) & 0x3F; /* Top 6 bits. */
|
insn |= (value >> 26) & 0x3F; /* Top 6 bits. */
|
||||||
insn2 |= ((value & 0x03FC0000) << 2); /* Next 8 bits. */
|
insn2 |= ((value & 0x03FC0000) << 2); /* Next 8 bits. */
|
||||||
insn2 |= value & 0x0003FFFF; /* Bottom 18 bits. */
|
insn2 |= value & 0x0003FFFF; /* Bottom 18 bits. */
|
||||||
bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
|
bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
|
||||||
bfd_putb32 ((bfd_vma) insn2, (unsigned char *) where + 4);
|
bfd_putb32 ((bfd_vma) insn2, (unsigned char *) where + 4);
|
||||||
break;
|
break;
|
||||||
@ -2019,7 +2019,7 @@ d30v_cleanup (use_sequential)
|
|||||||
if (use_sequential)
|
if (use_sequential)
|
||||||
prev_mul32_p = false;
|
prev_mul32_p = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-310v.h -- Header file for tc-d30v.c.
|
/* tc-310v.h -- Header file for tc-d30v.c.
|
||||||
Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
|
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||||
Written by Martin Hunt, Cygnus Support.
|
Written by Martin Hunt, Cygnus Support.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
@ -17,7 +17,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to the Free
|
along with GAS; see the file COPYING. If not, write to the Free
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
#include "write.h" /* For the definition of fixS. */
|
#include "write.h" /* For the definition of fixS. */
|
||||||
|
|
||||||
@ -39,7 +39,7 @@
|
|||||||
/* call md_pcrel_from_section, not md_pcrel_from */
|
/* call md_pcrel_from_section, not md_pcrel_from */
|
||||||
|
|
||||||
extern long md_pcrel_from_section PARAMS ((fixS *fixp, segT sec));
|
extern long md_pcrel_from_section PARAMS ((fixS *fixp, segT sec));
|
||||||
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
|
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
|
||||||
|
|
||||||
/* Permit temporary numeric labels. */
|
/* Permit temporary numeric labels. */
|
||||||
#define LOCAL_LABELS_FB 1
|
#define LOCAL_LABELS_FB 1
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-fr30.c -- Assembler for the Fujitsu FR30.
|
/* tc-fr30.c -- Assembler for the Fujitsu FR30.
|
||||||
Copyright (C) 1998, 1999 Free Software Foundation.
|
Copyright (C) 1998, 1999, 2000 Free Software Foundation.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -21,7 +21,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "as.h"
|
#include "as.h"
|
||||||
#include "subsegs.h"
|
#include "subsegs.h"
|
||||||
#include "symcat.h"
|
#include "symcat.h"
|
||||||
#include "opcodes/fr30-desc.h"
|
#include "opcodes/fr30-desc.h"
|
||||||
#include "opcodes/fr30-opc.h"
|
#include "opcodes/fr30-opc.h"
|
||||||
@ -82,7 +82,7 @@ md_show_usage (stream)
|
|||||||
FILE * stream;
|
FILE * stream;
|
||||||
{
|
{
|
||||||
fprintf (stream, _(" FR30 specific command line options:\n"));
|
fprintf (stream, _(" FR30 specific command line options:\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The target specific pseudo-ops which we support. */
|
/* The target specific pseudo-ops which we support. */
|
||||||
const pseudo_typeS md_pseudo_table[] =
|
const pseudo_typeS md_pseudo_table[] =
|
||||||
@ -100,7 +100,7 @@ md_begin ()
|
|||||||
subsegT subseg;
|
subsegT subseg;
|
||||||
|
|
||||||
/* Initialize the `cgen' interface. */
|
/* Initialize the `cgen' interface. */
|
||||||
|
|
||||||
/* Set the machine number and endian. */
|
/* Set the machine number and endian. */
|
||||||
gas_cgen_cpu_desc = fr30_cgen_cpu_open (CGEN_CPU_OPEN_MACHS, 0,
|
gas_cgen_cpu_desc = fr30_cgen_cpu_open (CGEN_CPU_OPEN_MACHS, 0,
|
||||||
CGEN_CPU_OPEN_ENDIAN,
|
CGEN_CPU_OPEN_ENDIAN,
|
||||||
@ -126,7 +126,7 @@ md_assemble (str)
|
|||||||
|
|
||||||
insn.insn = fr30_cgen_assemble_insn
|
insn.insn = fr30_cgen_assemble_insn
|
||||||
(gas_cgen_cpu_desc, str, & insn.fields, insn.buffer, & errmsg);
|
(gas_cgen_cpu_desc, str, & insn.fields, insn.buffer, & errmsg);
|
||||||
|
|
||||||
if (!insn.insn)
|
if (!insn.insn)
|
||||||
{
|
{
|
||||||
as_bad (errmsg);
|
as_bad (errmsg);
|
||||||
@ -150,7 +150,7 @@ md_assemble (str)
|
|||||||
/* The syntax in the manual says constants begin with '#'.
|
/* The syntax in the manual says constants begin with '#'.
|
||||||
We just ignore it. */
|
We just ignore it. */
|
||||||
|
|
||||||
void
|
void
|
||||||
md_operand (expressionP)
|
md_operand (expressionP)
|
||||||
expressionS * expressionP;
|
expressionS * expressionP;
|
||||||
{
|
{
|
||||||
@ -279,7 +279,7 @@ md_estimate_size_before_relax (fragP, segment)
|
|||||||
all further handling to md_convert_frag. */
|
all further handling to md_convert_frag. */
|
||||||
fragP->fr_subtype = 2;
|
fragP->fr_subtype = 2;
|
||||||
|
|
||||||
#if 0 /* Can't use this, but leave in for illustration. */
|
#if 0 /* Can't use this, but leave in for illustration. */
|
||||||
/* Change 16 bit insn to 32 bit insn. */
|
/* Change 16 bit insn to 32 bit insn. */
|
||||||
fragP->fr_opcode[0] |= 0x80;
|
fragP->fr_opcode[0] |= 0x80;
|
||||||
|
|
||||||
@ -323,7 +323,7 @@ md_estimate_size_before_relax (fragP, segment)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (fragP->fr_var + fragP->fr_fix - old_fr_fix);
|
return (fragP->fr_var + fragP->fr_fix - old_fr_fix);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* *fragP has been relaxed to its final size, and now needs to have
|
/* *fragP has been relaxed to its final size, and now needs to have
|
||||||
the bytes inside it modified to conform to the new size.
|
the bytes inside it modified to conform to the new size.
|
||||||
@ -549,7 +549,7 @@ md_atof (type, litP, sizeP)
|
|||||||
sizeof (LITTLENUM_TYPE));
|
sizeof (LITTLENUM_TYPE));
|
||||||
litP += sizeof (LITTLENUM_TYPE);
|
litP += sizeof (LITTLENUM_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,14 +559,14 @@ restore_colon (advance_i_l_p_by)
|
|||||||
int advance_i_l_p_by;
|
int advance_i_l_p_by;
|
||||||
{
|
{
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
/* Restore the colon, and advance input_line_pointer to
|
/* Restore the colon, and advance input_line_pointer to
|
||||||
the end of the new symbol. */
|
the end of the new symbol. */
|
||||||
* input_line_pointer = ':';
|
* input_line_pointer = ':';
|
||||||
input_line_pointer += advance_i_l_p_by;
|
input_line_pointer += advance_i_l_p_by;
|
||||||
c = * input_line_pointer;
|
c = * input_line_pointer;
|
||||||
* input_line_pointer = 0;
|
* input_line_pointer = 0;
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -610,11 +610,11 @@ fr30_is_colon_insn (start)
|
|||||||
|
|
||||||
if (start [len] != 0)
|
if (start [len] != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
while (len --)
|
while (len --)
|
||||||
if (tolower (start [len]) != insn [len])
|
if (tolower (start [len]) != insn [len])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (len == -1)
|
if (len == -1)
|
||||||
return restore_colon (1);
|
return restore_colon (1);
|
||||||
}
|
}
|
||||||
@ -645,16 +645,16 @@ fr30_fix_adjustable (fixP)
|
|||||||
{
|
{
|
||||||
if (fixP->fx_addsy == NULL)
|
if (fixP->fx_addsy == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* Prevent all adjustments to global symbols. */
|
/* Prevent all adjustments to global symbols. */
|
||||||
if (S_IS_EXTERN (fixP->fx_addsy))
|
if (S_IS_EXTERN (fixP->fx_addsy))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (S_IS_WEAK (fixP->fx_addsy))
|
if (S_IS_WEAK (fixP->fx_addsy))
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* We need the symbol name for the VTABLE entries */
|
/* We need the symbol name for the VTABLE entries */
|
||||||
if ( fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|
if ( fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|
||||||
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
|
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-fr30.h -- Header file for tc-fr30.c.
|
/* tc-fr30.h -- Header file for tc-fr30.c.
|
||||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
Copyright (C) 1998, 2000 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to
|
along with GAS; see the file COPYING. If not, write to
|
||||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define TC_FR30
|
#define TC_FR30
|
||||||
|
|
||||||
|
@ -2545,7 +2545,7 @@ m68k_ip (instring)
|
|||||||
case 'L':
|
case 'L':
|
||||||
long_branch:
|
long_branch:
|
||||||
if (! HAVE_LONG_BRANCH (current_architecture))
|
if (! HAVE_LONG_BRANCH (current_architecture))
|
||||||
as_warn (_("Can't use long branches on 68000/68010/5200"));
|
as_warn (_("Can't use long branches on 68000/68010/5200"));
|
||||||
the_ins.opcode[0] |= 0xff;
|
the_ins.opcode[0] |= 0xff;
|
||||||
add_fix ('l', &opP->disp, 1, 0);
|
add_fix ('l', &opP->disp, 1, 0);
|
||||||
addword (0);
|
addword (0);
|
||||||
@ -4683,7 +4683,7 @@ md_estimate_size_before_relax (fragP, segment)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TAB (PCINDEX, SZ_UNDEF):
|
case TAB (PCINDEX, SZ_UNDEF):
|
||||||
if ((S_GET_SEGMENT (fragP->fr_symbol) == segment
|
if ((S_GET_SEGMENT (fragP->fr_symbol) == segment
|
||||||
&& relaxable_symbol (fragP->fr_symbol)))
|
&& relaxable_symbol (fragP->fr_symbol)))
|
||||||
@ -7135,4 +7135,3 @@ void m68k_elf_final_processing()
|
|||||||
elf_elfheader (stdoutput)->e_flags |= EF_CPU32;
|
elf_elfheader (stdoutput)->e_flags |= EF_CPU32;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* end of tc-m68k.c */
|
|
||||||
|
@ -119,7 +119,7 @@ extern const char *m68k_comment_chars;
|
|||||||
/* On the Delta, `%' can occur within a label name, but not as the
|
/* On the Delta, `%' can occur within a label name, but not as the
|
||||||
initial character. */
|
initial character. */
|
||||||
#define LEX_PCT LEX_NAME
|
#define LEX_PCT LEX_NAME
|
||||||
/* On the Delta, `~' can start a label name, but is converted to '.'. */
|
/* On the Delta, `~' can start a label name, but is converted to '.'. */
|
||||||
#define LEX_TILDE LEX_BEGIN_NAME
|
#define LEX_TILDE LEX_BEGIN_NAME
|
||||||
#define tc_canonicalize_symbol_name(s) ((*(s) == '~' ? *(s) = '.' : '.'), s)
|
#define tc_canonicalize_symbol_name(s) ((*(s) == '~' ? *(s) = '.' : '.'), s)
|
||||||
/* On the Delta, dots are not required before pseudo-ops. */
|
/* On the Delta, dots are not required before pseudo-ops. */
|
||||||
@ -220,5 +220,3 @@ extern struct relax_type md_relax_table[];
|
|||||||
if (aim==0 && this_state== 4) { /* hard encoded from tc-m68k.c */ \
|
if (aim==0 && this_state== 4) { /* hard encoded from tc-m68k.c */ \
|
||||||
aim=this_type->rlx_forward+1; /* Force relaxation into word mode */ \
|
aim=this_type->rlx_forward+1; /* Force relaxation into word mode */ \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end of tc-m68k.h */
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/*-This file is tc-pj.h
|
/* This file is tc-pj.h
|
||||||
|
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Contributed by Steve Chamberlain of Transmeta, sac@pobox.com
|
Contributed by Steve Chamberlain of Transmeta, sac@pobox.com
|
||||||
|
|
||||||
@ -21,8 +20,7 @@
|
|||||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
/* Contributed by Steve Chamberlain, of Transmeta. sac@pobox.com. */
|
||||||
/* Contributed by Steve Chamberlain, of Transmeta. sac@pobox.com. */
|
|
||||||
|
|
||||||
#define WORKING_DOT_WORD
|
#define WORKING_DOT_WORD
|
||||||
#define IGNORE_NONSTANDARD_ESCAPES
|
#define IGNORE_NONSTANDARD_ESCAPES
|
||||||
@ -33,7 +31,6 @@
|
|||||||
? "Pico Java GAS Big Endian" \
|
? "Pico Java GAS Big Endian" \
|
||||||
: "Pico Java GAS Little Endian")
|
: "Pico Java GAS Little Endian")
|
||||||
|
|
||||||
|
|
||||||
void pj_cons_fix_new_pj PARAMS ((struct frag *, int, int, expressionS *));
|
void pj_cons_fix_new_pj PARAMS ((struct frag *, int, int, expressionS *));
|
||||||
arelent *tc_gen_reloc PARAMS((asection *section, struct fix *fixp));
|
arelent *tc_gen_reloc PARAMS((asection *section, struct fix *fixp));
|
||||||
|
|
||||||
@ -42,17 +39,16 @@ arelent *tc_gen_reloc PARAMS((asection *section, struct fix *fixp));
|
|||||||
#define md_estimate_size_before_relax(A, B) (as_fatal (_("estimate size\n")),0)
|
#define md_estimate_size_before_relax(A, B) (as_fatal (_("estimate size\n")),0)
|
||||||
#define md_undefined_symbol(NAME) 0
|
#define md_undefined_symbol(NAME) 0
|
||||||
|
|
||||||
/* PC relative operands are relative to the start of the opcode, and the operand
|
/* PC relative operands are relative to the start of the opcode, and
|
||||||
is always one byte into the opcode. */
|
the operand is always one byte into the opcode. */
|
||||||
|
|
||||||
#define md_pcrel_from(FIXP) \
|
#define md_pcrel_from(FIXP) \
|
||||||
((FIXP)->fx_where + (FIXP)->fx_frag->fr_address - 1)
|
((FIXP)->fx_where + (FIXP)->fx_frag->fr_address - 1)
|
||||||
|
|
||||||
|
|
||||||
#define TC_CONS_FIX_NEW(FRAG, WHERE, NBYTES, EXP) \
|
#define TC_CONS_FIX_NEW(FRAG, WHERE, NBYTES, EXP) \
|
||||||
pj_cons_fix_new_pj(FRAG, WHERE, NBYTES, EXP)
|
pj_cons_fix_new_pj(FRAG, WHERE, NBYTES, EXP)
|
||||||
|
|
||||||
/* Always leave vtable relocs untouched in the output. */
|
/* Always leave vtable relocs untouched in the output. */
|
||||||
#define TC_FORCE_RELOCATION(FIX) \
|
#define TC_FORCE_RELOCATION(FIX) \
|
||||||
((FIX)->fx_r_type == BFD_RELOC_VTABLE_INHERIT \
|
((FIX)->fx_r_type == BFD_RELOC_VTABLE_INHERIT \
|
||||||
|| (FIX)->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
|
|| (FIX)->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-ppc.c -- Assemble for the PowerPC or POWER (RS/6000)
|
/* tc-ppc.c -- Assemble for the PowerPC or POWER (RS/6000)
|
||||||
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000
|
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to the Free
|
along with GAS; see the file COPYING. If not, write to the Free
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -266,7 +266,7 @@ struct pd_reg
|
|||||||
srr0 has the value 26
|
srr0 has the value 26
|
||||||
srr1 has the value 27
|
srr1 has the value 27
|
||||||
|
|
||||||
The table is sorted. Suitable for searching by a binary search. */
|
The table is sorted. Suitable for searching by a binary search. */
|
||||||
|
|
||||||
static const struct pd_reg pre_defined_registers[] =
|
static const struct pd_reg pre_defined_registers[] =
|
||||||
{
|
{
|
||||||
@ -295,70 +295,70 @@ static const struct pd_reg pre_defined_registers[] =
|
|||||||
{ "dsisr", 18 }, /* Data Storage Interrupt Status Register */
|
{ "dsisr", 18 }, /* Data Storage Interrupt Status Register */
|
||||||
|
|
||||||
{ "f.0", 0 }, /* Floating point registers */
|
{ "f.0", 0 }, /* Floating point registers */
|
||||||
{ "f.1", 1 },
|
{ "f.1", 1 },
|
||||||
{ "f.10", 10 },
|
{ "f.10", 10 },
|
||||||
{ "f.11", 11 },
|
{ "f.11", 11 },
|
||||||
{ "f.12", 12 },
|
{ "f.12", 12 },
|
||||||
{ "f.13", 13 },
|
{ "f.13", 13 },
|
||||||
{ "f.14", 14 },
|
{ "f.14", 14 },
|
||||||
{ "f.15", 15 },
|
{ "f.15", 15 },
|
||||||
{ "f.16", 16 },
|
{ "f.16", 16 },
|
||||||
{ "f.17", 17 },
|
{ "f.17", 17 },
|
||||||
{ "f.18", 18 },
|
{ "f.18", 18 },
|
||||||
{ "f.19", 19 },
|
{ "f.19", 19 },
|
||||||
{ "f.2", 2 },
|
{ "f.2", 2 },
|
||||||
{ "f.20", 20 },
|
{ "f.20", 20 },
|
||||||
{ "f.21", 21 },
|
{ "f.21", 21 },
|
||||||
{ "f.22", 22 },
|
{ "f.22", 22 },
|
||||||
{ "f.23", 23 },
|
{ "f.23", 23 },
|
||||||
{ "f.24", 24 },
|
{ "f.24", 24 },
|
||||||
{ "f.25", 25 },
|
{ "f.25", 25 },
|
||||||
{ "f.26", 26 },
|
{ "f.26", 26 },
|
||||||
{ "f.27", 27 },
|
{ "f.27", 27 },
|
||||||
{ "f.28", 28 },
|
{ "f.28", 28 },
|
||||||
{ "f.29", 29 },
|
{ "f.29", 29 },
|
||||||
{ "f.3", 3 },
|
{ "f.3", 3 },
|
||||||
{ "f.30", 30 },
|
{ "f.30", 30 },
|
||||||
{ "f.31", 31 },
|
{ "f.31", 31 },
|
||||||
{ "f.4", 4 },
|
{ "f.4", 4 },
|
||||||
{ "f.5", 5 },
|
{ "f.5", 5 },
|
||||||
{ "f.6", 6 },
|
{ "f.6", 6 },
|
||||||
{ "f.7", 7 },
|
{ "f.7", 7 },
|
||||||
{ "f.8", 8 },
|
{ "f.8", 8 },
|
||||||
{ "f.9", 9 },
|
{ "f.9", 9 },
|
||||||
|
|
||||||
{ "f0", 0 },
|
{ "f0", 0 },
|
||||||
{ "f1", 1 },
|
{ "f1", 1 },
|
||||||
{ "f10", 10 },
|
{ "f10", 10 },
|
||||||
{ "f11", 11 },
|
{ "f11", 11 },
|
||||||
{ "f12", 12 },
|
{ "f12", 12 },
|
||||||
{ "f13", 13 },
|
{ "f13", 13 },
|
||||||
{ "f14", 14 },
|
{ "f14", 14 },
|
||||||
{ "f15", 15 },
|
{ "f15", 15 },
|
||||||
{ "f16", 16 },
|
{ "f16", 16 },
|
||||||
{ "f17", 17 },
|
{ "f17", 17 },
|
||||||
{ "f18", 18 },
|
{ "f18", 18 },
|
||||||
{ "f19", 19 },
|
{ "f19", 19 },
|
||||||
{ "f2", 2 },
|
{ "f2", 2 },
|
||||||
{ "f20", 20 },
|
{ "f20", 20 },
|
||||||
{ "f21", 21 },
|
{ "f21", 21 },
|
||||||
{ "f22", 22 },
|
{ "f22", 22 },
|
||||||
{ "f23", 23 },
|
{ "f23", 23 },
|
||||||
{ "f24", 24 },
|
{ "f24", 24 },
|
||||||
{ "f25", 25 },
|
{ "f25", 25 },
|
||||||
{ "f26", 26 },
|
{ "f26", 26 },
|
||||||
{ "f27", 27 },
|
{ "f27", 27 },
|
||||||
{ "f28", 28 },
|
{ "f28", 28 },
|
||||||
{ "f29", 29 },
|
{ "f29", 29 },
|
||||||
{ "f3", 3 },
|
{ "f3", 3 },
|
||||||
{ "f30", 30 },
|
{ "f30", 30 },
|
||||||
{ "f31", 31 },
|
{ "f31", 31 },
|
||||||
{ "f4", 4 },
|
{ "f4", 4 },
|
||||||
{ "f5", 5 },
|
{ "f5", 5 },
|
||||||
{ "f6", 6 },
|
{ "f6", 6 },
|
||||||
{ "f7", 7 },
|
{ "f7", 7 },
|
||||||
{ "f8", 8 },
|
{ "f8", 8 },
|
||||||
{ "f9", 9 },
|
{ "f9", 9 },
|
||||||
|
|
||||||
{ "fpscr", 0 },
|
{ "fpscr", 0 },
|
||||||
|
|
||||||
@ -444,71 +444,71 @@ static const struct pd_reg pre_defined_registers[] =
|
|||||||
|
|
||||||
{ "srr0", 26 }, /* Machine Status Save/Restore Register 0 */
|
{ "srr0", 26 }, /* Machine Status Save/Restore Register 0 */
|
||||||
{ "srr1", 27 }, /* Machine Status Save/Restore Register 1 */
|
{ "srr1", 27 }, /* Machine Status Save/Restore Register 1 */
|
||||||
|
|
||||||
{ "v.0", 0 }, /* Vector registers */
|
{ "v.0", 0 }, /* Vector registers */
|
||||||
{ "v.1", 1 },
|
{ "v.1", 1 },
|
||||||
{ "v.10", 10 },
|
{ "v.10", 10 },
|
||||||
{ "v.11", 11 },
|
{ "v.11", 11 },
|
||||||
{ "v.12", 12 },
|
{ "v.12", 12 },
|
||||||
{ "v.13", 13 },
|
{ "v.13", 13 },
|
||||||
{ "v.14", 14 },
|
{ "v.14", 14 },
|
||||||
{ "v.15", 15 },
|
{ "v.15", 15 },
|
||||||
{ "v.16", 16 },
|
{ "v.16", 16 },
|
||||||
{ "v.17", 17 },
|
{ "v.17", 17 },
|
||||||
{ "v.18", 18 },
|
{ "v.18", 18 },
|
||||||
{ "v.19", 19 },
|
{ "v.19", 19 },
|
||||||
{ "v.2", 2 },
|
{ "v.2", 2 },
|
||||||
{ "v.20", 20 },
|
{ "v.20", 20 },
|
||||||
{ "v.21", 21 },
|
{ "v.21", 21 },
|
||||||
{ "v.22", 22 },
|
{ "v.22", 22 },
|
||||||
{ "v.23", 23 },
|
{ "v.23", 23 },
|
||||||
{ "v.24", 24 },
|
{ "v.24", 24 },
|
||||||
{ "v.25", 25 },
|
{ "v.25", 25 },
|
||||||
{ "v.26", 26 },
|
{ "v.26", 26 },
|
||||||
{ "v.27", 27 },
|
{ "v.27", 27 },
|
||||||
{ "v.28", 28 },
|
{ "v.28", 28 },
|
||||||
{ "v.29", 29 },
|
{ "v.29", 29 },
|
||||||
{ "v.3", 3 },
|
{ "v.3", 3 },
|
||||||
{ "v.30", 30 },
|
{ "v.30", 30 },
|
||||||
{ "v.31", 31 },
|
{ "v.31", 31 },
|
||||||
{ "v.4", 4 },
|
{ "v.4", 4 },
|
||||||
{ "v.5", 5 },
|
{ "v.5", 5 },
|
||||||
{ "v.6", 6 },
|
{ "v.6", 6 },
|
||||||
{ "v.7", 7 },
|
{ "v.7", 7 },
|
||||||
{ "v.8", 8 },
|
{ "v.8", 8 },
|
||||||
{ "v.9", 9 },
|
{ "v.9", 9 },
|
||||||
|
|
||||||
{ "v0", 0 },
|
{ "v0", 0 },
|
||||||
{ "v1", 1 },
|
{ "v1", 1 },
|
||||||
{ "v10", 10 },
|
{ "v10", 10 },
|
||||||
{ "v11", 11 },
|
{ "v11", 11 },
|
||||||
{ "v12", 12 },
|
{ "v12", 12 },
|
||||||
{ "v13", 13 },
|
{ "v13", 13 },
|
||||||
{ "v14", 14 },
|
{ "v14", 14 },
|
||||||
{ "v15", 15 },
|
{ "v15", 15 },
|
||||||
{ "v16", 16 },
|
{ "v16", 16 },
|
||||||
{ "v17", 17 },
|
{ "v17", 17 },
|
||||||
{ "v18", 18 },
|
{ "v18", 18 },
|
||||||
{ "v19", 19 },
|
{ "v19", 19 },
|
||||||
{ "v2", 2 },
|
{ "v2", 2 },
|
||||||
{ "v20", 20 },
|
{ "v20", 20 },
|
||||||
{ "v21", 21 },
|
{ "v21", 21 },
|
||||||
{ "v22", 22 },
|
{ "v22", 22 },
|
||||||
{ "v23", 23 },
|
{ "v23", 23 },
|
||||||
{ "v24", 24 },
|
{ "v24", 24 },
|
||||||
{ "v25", 25 },
|
{ "v25", 25 },
|
||||||
{ "v26", 26 },
|
{ "v26", 26 },
|
||||||
{ "v27", 27 },
|
{ "v27", 27 },
|
||||||
{ "v28", 28 },
|
{ "v28", 28 },
|
||||||
{ "v29", 29 },
|
{ "v29", 29 },
|
||||||
{ "v3", 3 },
|
{ "v3", 3 },
|
||||||
{ "v30", 30 },
|
{ "v30", 30 },
|
||||||
{ "v31", 31 },
|
{ "v31", 31 },
|
||||||
{ "v4", 4 },
|
{ "v4", 4 },
|
||||||
{ "v5", 5 },
|
{ "v5", 5 },
|
||||||
{ "v6", 6 },
|
{ "v6", 6 },
|
||||||
{ "v7", 7 },
|
{ "v7", 7 },
|
||||||
{ "v8", 8 },
|
{ "v8", 8 },
|
||||||
{ "v9", 9 },
|
{ "v9", 9 },
|
||||||
|
|
||||||
{ "xer", 1 },
|
{ "xer", 1 },
|
||||||
@ -584,11 +584,11 @@ register_name (expressionP)
|
|||||||
reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT, name);
|
reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT, name);
|
||||||
|
|
||||||
/* look to see if it's in the register table */
|
/* look to see if it's in the register table */
|
||||||
if (reg_number >= 0)
|
if (reg_number >= 0)
|
||||||
{
|
{
|
||||||
expressionP->X_op = O_register;
|
expressionP->X_op = O_register;
|
||||||
expressionP->X_add_number = reg_number;
|
expressionP->X_add_number = reg_number;
|
||||||
|
|
||||||
/* make the rest nice */
|
/* make the rest nice */
|
||||||
expressionP->X_add_symbol = NULL;
|
expressionP->X_add_symbol = NULL;
|
||||||
expressionP->X_op_symbol = NULL;
|
expressionP->X_op_symbol = NULL;
|
||||||
@ -745,7 +745,7 @@ static segT reldata_section;
|
|||||||
static segT rdata_section;
|
static segT rdata_section;
|
||||||
static segT tocdata_section;
|
static segT tocdata_section;
|
||||||
|
|
||||||
/* The current section and the previous section. See ppc_previous. */
|
/* The current section and the previous section. See ppc_previous. */
|
||||||
static segT ppc_previous_section;
|
static segT ppc_previous_section;
|
||||||
static segT ppc_current_section;
|
static segT ppc_current_section;
|
||||||
|
|
||||||
@ -824,7 +824,7 @@ md_parse_option (c, arg)
|
|||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
/* -mpwrx and -mpwr2 mean to assemble for the IBM POWER/2
|
/* -mpwrx and -mpwr2 mean to assemble for the IBM POWER/2
|
||||||
(RIOS2). */
|
(RIOS2). */
|
||||||
@ -834,7 +834,7 @@ md_parse_option (c, arg)
|
|||||||
else if (strcmp (arg, "pwr") == 0)
|
else if (strcmp (arg, "pwr") == 0)
|
||||||
ppc_cpu = PPC_OPCODE_POWER;
|
ppc_cpu = PPC_OPCODE_POWER;
|
||||||
/* -m601 means to assemble for the Motorola PowerPC 601, which includes
|
/* -m601 means to assemble for the Motorola PowerPC 601, which includes
|
||||||
instructions that are holdovers from the Power. */
|
instructions that are holdovers from the Power. */
|
||||||
else if (strcmp (arg, "601") == 0)
|
else if (strcmp (arg, "601") == 0)
|
||||||
ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_601;
|
ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_601;
|
||||||
/* -mppc, -mppc32, -m603, and -m604 mean to assemble for the
|
/* -mppc, -mppc32, -m603, and -m604 mean to assemble for the
|
||||||
@ -1048,7 +1048,7 @@ ppc_subseg_align()
|
|||||||
return (ppc_xcoff64) ? 3 : 2;
|
return (ppc_xcoff64) ? 3 : 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern char*
|
extern char*
|
||||||
ppc_target_format()
|
ppc_target_format()
|
||||||
{
|
{
|
||||||
#ifdef OBJ_COFF
|
#ifdef OBJ_COFF
|
||||||
@ -1083,7 +1083,7 @@ md_begin ()
|
|||||||
ppc_set_cpu ();
|
ppc_set_cpu ();
|
||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
/* Set the ELF flags if desired. */
|
/* Set the ELF flags if desired. */
|
||||||
if (ppc_flags && !msolaris)
|
if (ppc_flags && !msolaris)
|
||||||
bfd_set_private_flags (stdoutput, ppc_flags);
|
bfd_set_private_flags (stdoutput, ppc_flags);
|
||||||
#endif
|
#endif
|
||||||
@ -1161,7 +1161,7 @@ md_begin ()
|
|||||||
#ifdef TE_PE
|
#ifdef TE_PE
|
||||||
|
|
||||||
ppc_current_section = text_section;
|
ppc_current_section = text_section;
|
||||||
ppc_previous_section = 0;
|
ppc_previous_section = 0;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1367,9 +1367,9 @@ ppc_elf_suffix (str_p, exp_p)
|
|||||||
return BFD_RELOC_UNUSED;
|
return BFD_RELOC_UNUSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Like normal .long/.short/.word, except support @got, etc. */
|
/* Like normal .long/.short/.word, except support @got, etc. */
|
||||||
/* clobbers input_line_pointer, checks */
|
/* clobbers input_line_pointer, checks */
|
||||||
/* end-of-line. */
|
/* end-of-line. */
|
||||||
static void
|
static void
|
||||||
ppc_elf_cons (nbytes)
|
ppc_elf_cons (nbytes)
|
||||||
register int nbytes; /* 1=.byte, 2=.word, 4=.long */
|
register int nbytes; /* 1=.byte, 2=.word, 4=.long */
|
||||||
@ -1409,7 +1409,7 @@ ppc_elf_cons (nbytes)
|
|||||||
}
|
}
|
||||||
while (*input_line_pointer++ == ',');
|
while (*input_line_pointer++ == ',');
|
||||||
|
|
||||||
input_line_pointer--; /* Put terminator back into stream. */
|
input_line_pointer--; /* Put terminator back into stream. */
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1595,7 +1595,7 @@ ppc_elf_validate_fix (fixp, seg)
|
|||||||
*
|
*
|
||||||
* Anything else is an error of one kind or another.
|
* Anything else is an error of one kind or another.
|
||||||
*
|
*
|
||||||
* out:
|
* out:
|
||||||
* return value: success or failure
|
* return value: success or failure
|
||||||
* toc_kind: kind of toc reference
|
* toc_kind: kind of toc reference
|
||||||
* input_line_pointer:
|
* input_line_pointer:
|
||||||
@ -1611,8 +1611,8 @@ ppc_elf_validate_fix (fixp, seg)
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum toc_size_qualifier
|
enum toc_size_qualifier
|
||||||
{
|
{
|
||||||
default_toc, /* The toc cell constructed should be the system default size */
|
default_toc, /* The toc cell constructed should be the system default size */
|
||||||
data_in_toc, /* This is a direct reference to a toc cell */
|
data_in_toc, /* This is a direct reference to a toc cell */
|
||||||
must_be_32, /* The toc cell constructed must be 32 bits wide */
|
must_be_32, /* The toc cell constructed must be 32 bits wide */
|
||||||
@ -1634,24 +1634,24 @@ parse_toc_entry(toc_kind)
|
|||||||
/* skip over the '[' , and whitespace */
|
/* skip over the '[' , and whitespace */
|
||||||
++input_line_pointer;
|
++input_line_pointer;
|
||||||
SKIP_WHITESPACE ();
|
SKIP_WHITESPACE ();
|
||||||
|
|
||||||
/* find the spelling of the operand */
|
/* find the spelling of the operand */
|
||||||
toc_spec = input_line_pointer;
|
toc_spec = input_line_pointer;
|
||||||
c = get_symbol_end ();
|
c = get_symbol_end ();
|
||||||
|
|
||||||
if (strcmp(toc_spec, "toc") == 0)
|
if (strcmp(toc_spec, "toc") == 0)
|
||||||
{
|
{
|
||||||
t = default_toc;
|
t = default_toc;
|
||||||
}
|
}
|
||||||
else if (strcmp(toc_spec, "tocv") == 0)
|
else if (strcmp(toc_spec, "tocv") == 0)
|
||||||
{
|
{
|
||||||
t = data_in_toc;
|
t = data_in_toc;
|
||||||
}
|
}
|
||||||
else if (strcmp(toc_spec, "toc32") == 0)
|
else if (strcmp(toc_spec, "toc32") == 0)
|
||||||
{
|
{
|
||||||
t = must_be_32;
|
t = must_be_32;
|
||||||
}
|
}
|
||||||
else if (strcmp(toc_spec, "toc64") == 0)
|
else if (strcmp(toc_spec, "toc64") == 0)
|
||||||
{
|
{
|
||||||
t = must_be_64;
|
t = must_be_64;
|
||||||
}
|
}
|
||||||
@ -1666,8 +1666,8 @@ parse_toc_entry(toc_kind)
|
|||||||
/* now find the ']' */
|
/* now find the ']' */
|
||||||
*input_line_pointer = c; /* put back the delimiting char */
|
*input_line_pointer = c; /* put back the delimiting char */
|
||||||
|
|
||||||
SKIP_WHITESPACE (); /* leading whitespace could be there. */
|
SKIP_WHITESPACE (); /* leading whitespace could be there. */
|
||||||
c = *input_line_pointer++; /* input_line_pointer->past char in c. */
|
c = *input_line_pointer++; /* input_line_pointer->past char in c. */
|
||||||
|
|
||||||
if (c != ']')
|
if (c != ']')
|
||||||
{
|
{
|
||||||
@ -1840,13 +1840,13 @@ md_assemble (str)
|
|||||||
input_line_pointer = str;
|
input_line_pointer = str;
|
||||||
|
|
||||||
#ifdef TE_PE
|
#ifdef TE_PE
|
||||||
if (*input_line_pointer == '[')
|
if (*input_line_pointer == '[')
|
||||||
{
|
{
|
||||||
/* We are expecting something like the second argument here:
|
/* We are expecting something like the second argument here:
|
||||||
|
|
||||||
lwz r4,[toc].GS.0.static_int(rtoc)
|
lwz r4,[toc].GS.0.static_int(rtoc)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
The argument following the `]' must be a symbol name, and the
|
The argument following the `]' must be a symbol name, and the
|
||||||
register must be the toc register: 'rtoc' or '2'
|
register must be the toc register: 'rtoc' or '2'
|
||||||
|
|
||||||
The effect is to 0 as the displacement field
|
The effect is to 0 as the displacement field
|
||||||
@ -1874,7 +1874,7 @@ md_assemble (str)
|
|||||||
/* go parse off the [tocXX] part */
|
/* go parse off the [tocXX] part */
|
||||||
valid_toc = parse_toc_entry(&toc_kind);
|
valid_toc = parse_toc_entry(&toc_kind);
|
||||||
|
|
||||||
if (!valid_toc)
|
if (!valid_toc)
|
||||||
{
|
{
|
||||||
/* Note: message has already been issued. */
|
/* Note: message has already been issued. */
|
||||||
/* FIXME: what sort of recovery should we do? */
|
/* FIXME: what sort of recovery should we do? */
|
||||||
@ -1900,8 +1900,8 @@ md_assemble (str)
|
|||||||
/* FIXME: It's a little confusing what the tocv qualifier can */
|
/* FIXME: It's a little confusing what the tocv qualifier can */
|
||||||
/* be used for. At the very least, I've seen three */
|
/* be used for. At the very least, I've seen three */
|
||||||
/* uses, only one of which I'm sure I can explain. */
|
/* uses, only one of which I'm sure I can explain. */
|
||||||
if (ex.X_op == O_symbol)
|
if (ex.X_op == O_symbol)
|
||||||
{
|
{
|
||||||
assert (ex.X_add_symbol != NULL);
|
assert (ex.X_add_symbol != NULL);
|
||||||
if (symbol_get_bfdsym (ex.X_add_symbol)->section
|
if (symbol_get_bfdsym (ex.X_add_symbol)->section
|
||||||
!= tocdata_section)
|
!= tocdata_section)
|
||||||
@ -1925,7 +1925,7 @@ md_assemble (str)
|
|||||||
as_bad (_("Unimplemented toc64 expression modifier"));
|
as_bad (_("Unimplemented toc64 expression modifier"));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
_("Unexpected return value [%d] from parse_toc_entry!\n"),
|
_("Unexpected return value [%d] from parse_toc_entry!\n"),
|
||||||
toc_kind);
|
toc_kind);
|
||||||
abort();
|
abort();
|
||||||
@ -1977,7 +1977,7 @@ md_assemble (str)
|
|||||||
else if (ex.X_op == O_constant)
|
else if (ex.X_op == O_constant)
|
||||||
{
|
{
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
/* Allow @HA, @L, @H on constants. */
|
/* Allow @HA, @L, @H on constants. */
|
||||||
char *orig_str = str;
|
char *orig_str = str;
|
||||||
|
|
||||||
if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED)
|
if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED)
|
||||||
@ -2183,7 +2183,7 @@ ppc_macro (str, macro)
|
|||||||
if (s == (char *) NULL)
|
if (s == (char *) NULL)
|
||||||
break;
|
break;
|
||||||
*s++ = '\0';
|
*s++ = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count != macro->operands)
|
if (count != macro->operands)
|
||||||
{
|
{
|
||||||
@ -2230,7 +2230,7 @@ ppc_macro (str, macro)
|
|||||||
|
|
||||||
/* Assemble the constructed instruction. */
|
/* Assemble the constructed instruction. */
|
||||||
md_assemble (complete);
|
md_assemble (complete);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
/* For ELF, add support for SHF_EXCLUDE and SHT_ORDERED */
|
/* For ELF, add support for SHF_EXCLUDE and SHT_ORDERED */
|
||||||
@ -2415,7 +2415,7 @@ ppc_comm (lcomm)
|
|||||||
|
|
||||||
lcomm_name = input_line_pointer;
|
lcomm_name = input_line_pointer;
|
||||||
lcomm_endc = get_symbol_end ();
|
lcomm_endc = get_symbol_end ();
|
||||||
|
|
||||||
lcomm_sym = symbol_find_or_make (lcomm_name);
|
lcomm_sym = symbol_find_or_make (lcomm_name);
|
||||||
|
|
||||||
*input_line_pointer = lcomm_endc;
|
*input_line_pointer = lcomm_endc;
|
||||||
@ -2432,9 +2432,9 @@ ppc_comm (lcomm)
|
|||||||
ignore_rest_of_line ();
|
ignore_rest_of_line ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
record_alignment (bss_section, align);
|
record_alignment (bss_section, align);
|
||||||
|
|
||||||
if (! lcomm
|
if (! lcomm
|
||||||
|| ! S_IS_DEFINED (lcomm_sym))
|
|| ! S_IS_DEFINED (lcomm_sym))
|
||||||
{
|
{
|
||||||
@ -2456,7 +2456,7 @@ ppc_comm (lcomm)
|
|||||||
|
|
||||||
subseg_set (bss_section, 1);
|
subseg_set (bss_section, 1);
|
||||||
frag_align (align, 0, 0);
|
frag_align (align, 0, 0);
|
||||||
|
|
||||||
symbol_set_frag (def_sym, frag_now);
|
symbol_set_frag (def_sym, frag_now);
|
||||||
pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, def_sym,
|
pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, def_sym,
|
||||||
def_size, (char *) NULL);
|
def_size, (char *) NULL);
|
||||||
@ -2504,7 +2504,7 @@ ppc_csect (ignore)
|
|||||||
|
|
||||||
name = input_line_pointer;
|
name = input_line_pointer;
|
||||||
endc = get_symbol_end ();
|
endc = get_symbol_end ();
|
||||||
|
|
||||||
sym = symbol_find_or_make (name);
|
sym = symbol_find_or_make (name);
|
||||||
|
|
||||||
*input_line_pointer = endc;
|
*input_line_pointer = endc;
|
||||||
@ -2600,13 +2600,13 @@ ppc_change_csect (sym)
|
|||||||
symbol_get_tc (sym)->align = (ppc_xcoff64) ? 3 : 2;
|
symbol_get_tc (sym)->align = (ppc_xcoff64) ? 3 : 2;
|
||||||
symbol_get_tc (sym)->output = 1;
|
symbol_get_tc (sym)->output = 1;
|
||||||
symbol_get_tc (sym)->within = sym;
|
symbol_get_tc (sym)->within = sym;
|
||||||
|
|
||||||
for (list = *list_ptr;
|
for (list = *list_ptr;
|
||||||
symbol_get_tc (list)->next != (symbolS *) NULL;
|
symbol_get_tc (list)->next != (symbolS *) NULL;
|
||||||
list = symbol_get_tc (list)->next)
|
list = symbol_get_tc (list)->next)
|
||||||
;
|
;
|
||||||
symbol_get_tc (list)->next = sym;
|
symbol_get_tc (list)->next = sym;
|
||||||
|
|
||||||
symbol_remove (sym, &symbol_rootP, &symbol_lastP);
|
symbol_remove (sym, &symbol_rootP, &symbol_lastP);
|
||||||
symbol_append (sym, symbol_get_tc (list)->within, &symbol_rootP,
|
symbol_append (sym, symbol_get_tc (list)->within, &symbol_rootP,
|
||||||
&symbol_lastP);
|
&symbol_lastP);
|
||||||
@ -3034,7 +3034,7 @@ ppc_biei (ei)
|
|||||||
|
|
||||||
S_SET_STORAGE_CLASS (sym, ei ? C_EINCL : C_BINCL);
|
S_SET_STORAGE_CLASS (sym, ei ? C_EINCL : C_BINCL);
|
||||||
symbol_get_tc (sym)->output = 1;
|
symbol_get_tc (sym)->output = 1;
|
||||||
|
|
||||||
for (look = last_biei ? last_biei : symbol_rootP;
|
for (look = last_biei ? last_biei : symbol_rootP;
|
||||||
(look != (symbolS *) NULL
|
(look != (symbolS *) NULL
|
||||||
&& (S_GET_STORAGE_CLASS (look) == C_FILE
|
&& (S_GET_STORAGE_CLASS (look) == C_FILE
|
||||||
@ -3223,7 +3223,7 @@ ppc_toc (ignore)
|
|||||||
subsegT subseg;
|
subsegT subseg;
|
||||||
symbolS *sym;
|
symbolS *sym;
|
||||||
symbolS *list;
|
symbolS *list;
|
||||||
|
|
||||||
subseg = ppc_data_subsegment;
|
subseg = ppc_data_subsegment;
|
||||||
++ppc_data_subsegment;
|
++ppc_data_subsegment;
|
||||||
|
|
||||||
@ -3239,7 +3239,7 @@ ppc_toc (ignore)
|
|||||||
symbol_get_tc (sym)->within = sym;
|
symbol_get_tc (sym)->within = sym;
|
||||||
|
|
||||||
ppc_toc_csect = sym;
|
ppc_toc_csect = sym;
|
||||||
|
|
||||||
for (list = ppc_data_csects;
|
for (list = ppc_data_csects;
|
||||||
symbol_get_tc (list)->next != (symbolS *) NULL;
|
symbol_get_tc (list)->next != (symbolS *) NULL;
|
||||||
list = symbol_get_tc (list)->next)
|
list = symbol_get_tc (list)->next)
|
||||||
@ -3269,7 +3269,7 @@ ppc_xcoff_cons (log_size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ppc_machine(dummy)
|
ppc_machine(dummy)
|
||||||
int dummy ATTRIBUTE_UNUSED;
|
int dummy ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
discard_rest_of_line();
|
discard_rest_of_line();
|
||||||
@ -3424,7 +3424,7 @@ ppc_previous(ignore)
|
|||||||
{
|
{
|
||||||
symbolS *tmp;
|
symbolS *tmp;
|
||||||
|
|
||||||
if (ppc_previous_section == NULL)
|
if (ppc_previous_section == NULL)
|
||||||
{
|
{
|
||||||
as_warn(_("No previous section to return to. Directive ignored."));
|
as_warn(_("No previous section to return to. Directive ignored."));
|
||||||
return;
|
return;
|
||||||
@ -3455,14 +3455,14 @@ static void
|
|||||||
ppc_pdata(ignore)
|
ppc_pdata(ignore)
|
||||||
int ignore ATTRIBUTE_UNUSED;
|
int ignore ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
if (pdata_section == 0)
|
if (pdata_section == 0)
|
||||||
{
|
{
|
||||||
pdata_section = subseg_new (".pdata", 0);
|
pdata_section = subseg_new (".pdata", 0);
|
||||||
|
|
||||||
bfd_set_section_flags (stdoutput, pdata_section,
|
bfd_set_section_flags (stdoutput, pdata_section,
|
||||||
(SEC_ALLOC | SEC_LOAD | SEC_RELOC
|
(SEC_ALLOC | SEC_LOAD | SEC_RELOC
|
||||||
| SEC_READONLY | SEC_DATA ));
|
| SEC_READONLY | SEC_DATA ));
|
||||||
|
|
||||||
bfd_set_section_alignment (stdoutput, pdata_section, 2);
|
bfd_set_section_alignment (stdoutput, pdata_section, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -3490,7 +3490,7 @@ static void
|
|||||||
ppc_ydata(ignore)
|
ppc_ydata(ignore)
|
||||||
int ignore ATTRIBUTE_UNUSED;
|
int ignore ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
if (ydata_section == 0)
|
if (ydata_section == 0)
|
||||||
{
|
{
|
||||||
ydata_section = subseg_new (".ydata", 0);
|
ydata_section = subseg_new (".ydata", 0);
|
||||||
bfd_set_section_flags (stdoutput, ydata_section,
|
bfd_set_section_flags (stdoutput, ydata_section,
|
||||||
@ -3532,7 +3532,7 @@ ppc_reldata(ignore)
|
|||||||
reldata_section = subseg_new (".reldata", 0);
|
reldata_section = subseg_new (".reldata", 0);
|
||||||
|
|
||||||
bfd_set_section_flags (stdoutput, reldata_section,
|
bfd_set_section_flags (stdoutput, reldata_section,
|
||||||
( SEC_ALLOC | SEC_LOAD | SEC_RELOC
|
( SEC_ALLOC | SEC_LOAD | SEC_RELOC
|
||||||
| SEC_DATA ));
|
| SEC_DATA ));
|
||||||
|
|
||||||
bfd_set_section_alignment (stdoutput, reldata_section, 2);
|
bfd_set_section_alignment (stdoutput, reldata_section, 2);
|
||||||
@ -3575,7 +3575,7 @@ ppc_rdata(ignore)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* pseudo-op: .ualong
|
/* pseudo-op: .ualong
|
||||||
behaviour: much like .int, with the exception that no alignment is
|
behaviour: much like .int, with the exception that no alignment is
|
||||||
performed.
|
performed.
|
||||||
FIXME: test the alignment statement
|
FIXME: test the alignment statement
|
||||||
errors: None
|
errors: None
|
||||||
@ -3646,10 +3646,10 @@ ppc_znop(ignore)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pseudo-op:
|
/* pseudo-op:
|
||||||
behaviour:
|
behaviour:
|
||||||
errors:
|
errors:
|
||||||
warnings:
|
warnings:
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
ppc_pe_comm(lcomm)
|
ppc_pe_comm(lcomm)
|
||||||
@ -3749,7 +3749,7 @@ ppc_pe_comm(lcomm)
|
|||||||
* additions/changes for the moto-pas assembler support. There are three
|
* additions/changes for the moto-pas assembler support. There are three
|
||||||
* categories:
|
* categories:
|
||||||
*
|
*
|
||||||
* FIXME: I just noticed this. This doesn't work at all really. It it
|
* FIXME: I just noticed this. This doesn't work at all really. It it
|
||||||
* setting bits that bfd probably neither understands or uses. The
|
* setting bits that bfd probably neither understands or uses. The
|
||||||
* correct approach (?) will have to incorporate extra fields attached
|
* correct approach (?) will have to incorporate extra fields attached
|
||||||
* to the section to hold the system specific stuff. (krk)
|
* to the section to hold the system specific stuff. (krk)
|
||||||
@ -3848,7 +3848,7 @@ ppc_pe_section (ignore)
|
|||||||
as_bad (_("Unsupported section attribute -- 'a'"));
|
as_bad (_("Unsupported section attribute -- 'a'"));
|
||||||
break;
|
break;
|
||||||
case 'c': /* code section */
|
case 'c': /* code section */
|
||||||
flags |= SEC_CODE;
|
flags |= SEC_CODE;
|
||||||
break;
|
break;
|
||||||
case 'd': /* section has initialized data */
|
case 'd': /* section has initialized data */
|
||||||
flags |= SEC_DATA;
|
flags |= SEC_DATA;
|
||||||
@ -3864,7 +3864,7 @@ ppc_pe_section (ignore)
|
|||||||
flags |= SEC_HAS_CONTENTS;
|
flags |= SEC_HAS_CONTENTS;
|
||||||
break;
|
break;
|
||||||
case 'n': /* section can be discarded */
|
case 'n': /* section can be discarded */
|
||||||
flags &=~ SEC_LOAD;
|
flags &=~ SEC_LOAD;
|
||||||
break;
|
break;
|
||||||
case 'R': /* Remove section at link time */
|
case 'R': /* Remove section at link time */
|
||||||
flags |= SEC_NEVER_LOAD;
|
flags |= SEC_NEVER_LOAD;
|
||||||
@ -4372,7 +4372,7 @@ ppc_frob_symbol (sym)
|
|||||||
}
|
}
|
||||||
a->x_csect.x_smtyp = XTY_LD;
|
a->x_csect.x_smtyp = XTY_LD;
|
||||||
}
|
}
|
||||||
|
|
||||||
a->x_csect.x_parmhash = 0;
|
a->x_csect.x_parmhash = 0;
|
||||||
a->x_csect.x_snhash = 0;
|
a->x_csect.x_snhash = 0;
|
||||||
if (symbol_get_tc (sym)->class == -1)
|
if (symbol_get_tc (sym)->class == -1)
|
||||||
@ -4533,7 +4533,7 @@ md_atof (type, litp, sizep)
|
|||||||
litp += 2;
|
litp += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4982,7 +4982,7 @@ md_apply_fix3 (fixp, valuep, seg)
|
|||||||
case BFD_RELOC_64_PCREL:
|
case BFD_RELOC_64_PCREL:
|
||||||
md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
|
md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
|
||||||
value, 8);
|
value, 8);
|
||||||
break;
|
break;
|
||||||
case BFD_RELOC_LO16:
|
case BFD_RELOC_LO16:
|
||||||
case BFD_RELOC_16:
|
case BFD_RELOC_16:
|
||||||
case BFD_RELOC_GPREL16:
|
case BFD_RELOC_GPREL16:
|
||||||
@ -5068,7 +5068,7 @@ md_apply_fix3 (fixp, valuep, seg)
|
|||||||
{
|
{
|
||||||
char *where;
|
char *where;
|
||||||
unsigned long insn;
|
unsigned long insn;
|
||||||
|
|
||||||
/* Fetch the instruction, insert the fully resolved operand
|
/* Fetch the instruction, insert the fully resolved operand
|
||||||
value, and stuff the instruction back again. */
|
value, and stuff the instruction back again. */
|
||||||
where = fixp->fx_frag->fr_literal + fixp->fx_where;
|
where = fixp->fx_frag->fr_literal + fixp->fx_where;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to the Free
|
along with GAS; see the file COPYING. If not, write to the Free
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
#define TC_PPC
|
#define TC_PPC
|
||||||
|
|
||||||
@ -186,7 +186,6 @@ do { \
|
|||||||
symbol_get_tc (dest)->within = symbol_get_tc (src)->within; \
|
symbol_get_tc (dest)->within = symbol_get_tc (src)->within; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
#endif /* OBJ_XCOFF */
|
#endif /* OBJ_XCOFF */
|
||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
@ -232,7 +231,7 @@ extern int ppc_section_flags PARAMS ((int, int, int));
|
|||||||
#define tc_comment_chars ppc_comment_chars
|
#define tc_comment_chars ppc_comment_chars
|
||||||
extern const char *ppc_comment_chars;
|
extern const char *ppc_comment_chars;
|
||||||
|
|
||||||
/* Keep relocations relative to the GOT, or non-PC relative. */
|
/* Keep relocations relative to the GOT, or non-PC relative. */
|
||||||
#define tc_fix_adjustable(FIX) \
|
#define tc_fix_adjustable(FIX) \
|
||||||
((FIX)->fx_r_type != BFD_RELOC_16_GOTOFF \
|
((FIX)->fx_r_type != BFD_RELOC_16_GOTOFF \
|
||||||
&& (FIX)->fx_r_type != BFD_RELOC_LO16_GOTOFF \
|
&& (FIX)->fx_r_type != BFD_RELOC_LO16_GOTOFF \
|
||||||
@ -272,4 +271,3 @@ extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
|
|||||||
extern int ppc_parse_name PARAMS ((const char *, struct expressionS *));
|
extern int ppc_parse_name PARAMS ((const char *, struct expressionS *));
|
||||||
|
|
||||||
#define md_operand(x)
|
#define md_operand(x)
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ static struct hash_control *opcode_hash_control; /* Opcode mnemonics */
|
|||||||
|
|
||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
/* Parse @got, etc. and return the desired relocation.
|
/* Parse @got, etc. and return the desired relocation.
|
||||||
If we have additional arithmetic expression, then we fill in new_exp_p. */
|
If we have additional arithmetic expression, then we fill in new_exp_p. */
|
||||||
static bfd_reloc_code_real_type
|
static bfd_reloc_code_real_type
|
||||||
sh_elf_suffix (str_p, exp_p, new_exp_p)
|
sh_elf_suffix (str_p, exp_p, new_exp_p)
|
||||||
@ -377,7 +377,7 @@ sh_elf_cons (nbytes)
|
|||||||
|
|
||||||
fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size,
|
fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size,
|
||||||
&exp, 0, reloc);
|
&exp, 0, reloc);
|
||||||
if (new_exp.X_op != O_absent)
|
if (new_exp.X_op != O_absent)
|
||||||
fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size,
|
fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size,
|
||||||
&new_exp, 0, BFD_RELOC_32);
|
&new_exp, 0, BFD_RELOC_32);
|
||||||
}
|
}
|
||||||
@ -387,7 +387,7 @@ sh_elf_cons (nbytes)
|
|||||||
}
|
}
|
||||||
while (*input_line_pointer++ == ',');
|
while (*input_line_pointer++ == ',');
|
||||||
|
|
||||||
input_line_pointer--; /* Put terminator back into stream. */
|
input_line_pointer--; /* Put terminator back into stream. */
|
||||||
if (*input_line_pointer == '#' || *input_line_pointer == '!')
|
if (*input_line_pointer == '#' || *input_line_pointer == '!')
|
||||||
{
|
{
|
||||||
while (! is_end_of_line[*input_line_pointer++]);
|
while (! is_end_of_line[*input_line_pointer++]);
|
||||||
@ -1930,19 +1930,17 @@ md_assemble (str)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (debug_type == DEBUG_DWARF2)
|
if (debug_type == DEBUG_DWARF2)
|
||||||
{
|
{
|
||||||
bfd_vma addr;
|
bfd_vma addr;
|
||||||
|
|
||||||
/* First update the notion of the current source line. */
|
/* First update the notion of the current source line. */
|
||||||
dwarf2_where (&debug_line);
|
dwarf2_where (&debug_line);
|
||||||
|
|
||||||
/* We want the offset of the start of this instruction within the
|
/* We want the offset of the start of this instruction within the
|
||||||
the current frag. may be used later */
|
the current frag. may be used later */
|
||||||
addr = frag_now->fr_address + frag_now_fix () - size;
|
addr = frag_now->fr_address + frag_now_fix () - size;
|
||||||
|
|
||||||
|
|
||||||
/* And record the information. */
|
/* And record the information. */
|
||||||
dwarf2_gen_line_info (addr, &debug_line);
|
dwarf2_gen_line_info (addr, &debug_line);
|
||||||
@ -2002,15 +2000,15 @@ md_undefined_symbol (name)
|
|||||||
{
|
{
|
||||||
if (symbol_find (name))
|
if (symbol_find (name))
|
||||||
as_bad ("GOT already in the symbol table");
|
as_bad ("GOT already in the symbol table");
|
||||||
|
|
||||||
GOT_symbol = symbol_new (name, undefined_section,
|
GOT_symbol = symbol_new (name, undefined_section,
|
||||||
(valueT)0, & zero_address_frag);
|
(valueT)0, & zero_address_frag);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GOT_symbol;
|
return GOT_symbol;
|
||||||
}
|
}
|
||||||
#endif /* OBJ_ELF */
|
#endif /* OBJ_ELF */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2857,7 +2855,7 @@ md_apply_fix (fixP, val)
|
|||||||
case BFD_RELOC_16:
|
case BFD_RELOC_16:
|
||||||
bfd_set_error (bfd_error_bad_value);
|
bfd_set_error (bfd_error_bad_value);
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case BFD_RELOC_8:
|
case BFD_RELOC_8:
|
||||||
bfd_set_error (bfd_error_bad_value);
|
bfd_set_error (bfd_error_bad_value);
|
||||||
return false;
|
return false;
|
||||||
@ -3010,7 +3008,7 @@ md_apply_fix (fixP, val)
|
|||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
case BFD_RELOC_32_PLT_PCREL:
|
case BFD_RELOC_32_PLT_PCREL:
|
||||||
/* Make the jump instruction point to the address of the operand. At
|
/* Make the jump instruction point to the address of the operand. At
|
||||||
runtime we merely add the offset to the actual PLT entry. */
|
runtime we merely add the offset to the actual PLT entry. */
|
||||||
*valp = 0xfffffffc;
|
*valp = 0xfffffffc;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3021,9 +3019,9 @@ md_apply_fix (fixP, val)
|
|||||||
and it is strongly preferable from a performance point of
|
and it is strongly preferable from a performance point of
|
||||||
view to avoid using a runtime relocation for this. There are
|
view to avoid using a runtime relocation for this. There are
|
||||||
cases where you have something like:
|
cases where you have something like:
|
||||||
|
|
||||||
.long _GLOBAL_OFFSET_TABLE_+[.-.L66]
|
.long _GLOBAL_OFFSET_TABLE_+[.-.L66]
|
||||||
|
|
||||||
and here no correction would be required. Internally in the
|
and here no correction would be required. Internally in the
|
||||||
assembler we treat operands of this form as not being pcrel
|
assembler we treat operands of this form as not being pcrel
|
||||||
since the '.' is explicitly mentioned, and I wonder whether
|
since the '.' is explicitly mentioned, and I wonder whether
|
||||||
|
@ -172,7 +172,7 @@ extern void sh_elf_final_processing PARAMS ((void));
|
|||||||
#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
|
#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
|
||||||
|
|
||||||
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
|
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
|
||||||
|
|
||||||
/* This is the relocation type for direct references to
|
/* This is the relocation type for direct references to
|
||||||
GLOBAL_OFFSET_TABLE. It comes up in complicated expressions such
|
GLOBAL_OFFSET_TABLE. It comes up in complicated expressions such
|
||||||
as _GLOBAL_OFFSET_TABLE_+[.-.L284], which cannot be expressed
|
as _GLOBAL_OFFSET_TABLE_+[.-.L284], which cannot be expressed
|
||||||
@ -209,5 +209,3 @@ extern void sh_elf_final_processing PARAMS ((void));
|
|||||||
|
|
||||||
#define md_end() sh_finalize ()
|
#define md_end() sh_finalize ()
|
||||||
void sh_finalize PARAMS ((void));
|
void sh_finalize PARAMS ((void));
|
||||||
|
|
||||||
/* end of tc-sh.h */
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
You should have received a copy of the GNU General Public
|
You should have received a copy of the GNU General Public
|
||||||
License along with GAS; see the file COPYING. If not, write
|
License along with GAS; see the file COPYING. If not, write
|
||||||
to the Free Software Foundation, 59 Temple Place - Suite 330,
|
to the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -2841,7 +2841,7 @@ md_number_to_chars (buf, val, n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Apply a fixS to the frags, now that we know the value it ought to
|
/* Apply a fixS to the frags, now that we know the value it ought to
|
||||||
hold. */
|
hold. */
|
||||||
|
|
||||||
int
|
int
|
||||||
md_apply_fix3 (fixP, value, segment)
|
md_apply_fix3 (fixP, value, segment)
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to the Free
|
along with GAS; see the file COPYING. If not, write to the Free
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
#define TC_V850
|
#define TC_V850
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ extern int v850_force_relocation PARAMS ((struct fix *));
|
|||||||
#define WORKING_DOT_WORD
|
#define WORKING_DOT_WORD
|
||||||
|
|
||||||
#define md_number_to_chars number_to_chars_littleendian
|
#define md_number_to_chars number_to_chars_littleendian
|
||||||
|
|
||||||
/* We need to handle lo(), hi(), etc etc in .hword, .word, etc
|
/* We need to handle lo(), hi(), etc etc in .hword, .word, etc
|
||||||
directives, so we have to parse "cons" expressions ourselves. */
|
directives, so we have to parse "cons" expressions ourselves. */
|
||||||
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) parse_cons_expression_v850 (EXP)
|
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) parse_cons_expression_v850 (EXP)
|
||||||
@ -65,7 +65,6 @@ extern int v850_force_relocation PARAMS ((struct fix *));
|
|||||||
extern const struct relax_type md_relax_table[];
|
extern const struct relax_type md_relax_table[];
|
||||||
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
||||||
|
|
||||||
|
|
||||||
/* This section must be in the small data area (pointed to by GP). */
|
/* This section must be in the small data area (pointed to by GP). */
|
||||||
#define SHF_V850_GPREL 0x10000000
|
#define SHF_V850_GPREL 0x10000000
|
||||||
/* This section must be in the tiny data area (pointed to by EP). */
|
/* This section must be in the tiny data area (pointed to by EP). */
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* tc-vax.h -- Header file for tc-vax.c.
|
/* tc-vax.h -- Header file for tc-vax.c.
|
||||||
Copyright (C) 1987, 91, 92, 93, 95, 96, 1997 Free Software Foundation, Inc.
|
Copyright (C) 1987, 91, 92, 93, 95, 96, 97, 2000
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -16,7 +17,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to the Free
|
along with GAS; see the file COPYING. If not, write to the Free
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
#define TC_VAX 1
|
#define TC_VAX 1
|
||||||
|
|
||||||
@ -41,5 +42,3 @@ extern const struct relax_type md_relax_table[];
|
|||||||
* fill-column: 131
|
* fill-column: 131
|
||||||
* End:
|
* End:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* end of tc-vax.h */
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* This file is tc-w65.h
|
/* This file is tc-w65.h
|
||||||
Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -18,7 +18,6 @@
|
|||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
|
|
||||||
#define TC_W65
|
#define TC_W65
|
||||||
|
|
||||||
#define TARGET_BYTES_BIG_ENDIAN 0
|
#define TARGET_BYTES_BIG_ENDIAN 0
|
||||||
@ -57,5 +56,3 @@ int tc_cons_reloc;
|
|||||||
|
|
||||||
extern struct relax_type md_relax_table[];
|
extern struct relax_type md_relax_table[];
|
||||||
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
||||||
|
|
||||||
/* end of tc-w65.h */
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* This file is tc-z8k.h
|
/* This file is tc-z8k.h
|
||||||
Copyright (C) 1987-1992, 93, 95, 97, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1987-1992, 93, 95, 97, 98, 2000
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -18,7 +19,6 @@
|
|||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
|
|
||||||
#define TC_Z8K
|
#define TC_Z8K
|
||||||
#define TARGET_BYTES_BIG_ENDIAN 1
|
#define TARGET_BYTES_BIG_ENDIAN 1
|
||||||
|
|
||||||
@ -50,5 +50,3 @@ extern void tc_reloc_mangle
|
|||||||
#define RELOC_32 1234
|
#define RELOC_32 1234
|
||||||
|
|
||||||
#define md_operand(x)
|
#define md_operand(x)
|
||||||
|
|
||||||
/* end of tc-z8k.h */
|
|
||||||
|
Reference in New Issue
Block a user