forked from Imagelibrary/binutils-gdb
2000-09-03 Kazu Hirata <kazu@hxi.com>
* cgen.c: Fix formatting. * config/tc-ia64.c: Likewise.
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2000-09-05 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* cgen.c: Fix formatting.
|
||||
* config/tc-ia64.c: Likewise.
|
||||
|
||||
2000-09-05 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* aclocal.m4: Regenerate.
|
||||
|
||||
123
gas/cgen.c
123
gas/cgen.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
|
||||
|
||||
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 Software
|
||||
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <setjmp.h>
|
||||
#include "ansidecl.h"
|
||||
@@ -37,13 +37,13 @@ CGEN_CPU_DESC gas_cgen_cpu_desc;
|
||||
|
||||
void
|
||||
cgen_asm_record_register (name, number)
|
||||
char * name;
|
||||
char *name;
|
||||
int number;
|
||||
{
|
||||
/* Use symbol_create here instead of symbol_new so we don't try to
|
||||
output registers into the object file's symbol table. */
|
||||
symbol_table_insert (symbol_create (name, reg_section,
|
||||
number, & zero_address_frag));
|
||||
number, &zero_address_frag));
|
||||
}
|
||||
|
||||
/* We need to keep a list of fixups. We can't simply generate them as
|
||||
@@ -64,7 +64,7 @@ struct fixup
|
||||
expressionS exp;
|
||||
};
|
||||
|
||||
static struct fixup fixups [GAS_CGEN_MAX_FIXUPS];
|
||||
static struct fixup fixups[GAS_CGEN_MAX_FIXUPS];
|
||||
static int num_fixups;
|
||||
|
||||
/* Prepare to parse an instruction.
|
||||
@@ -100,14 +100,14 @@ queue_fixup (opindex, opinfo, expP)
|
||||
/* ??? I think with cgen_asm_finish_insn (or something else) there is no
|
||||
more need for this. */
|
||||
|
||||
static struct fixup saved_fixups [GAS_CGEN_MAX_FIXUPS];
|
||||
static struct fixup saved_fixups[GAS_CGEN_MAX_FIXUPS];
|
||||
static int saved_num_fixups;
|
||||
|
||||
void
|
||||
gas_cgen_save_fixups ()
|
||||
{
|
||||
saved_num_fixups = num_fixups;
|
||||
|
||||
|
||||
memcpy (saved_fixups, fixups, sizeof (fixups[0]) * num_fixups);
|
||||
|
||||
num_fixups = 0;
|
||||
@@ -117,7 +117,7 @@ void
|
||||
gas_cgen_restore_fixups ()
|
||||
{
|
||||
num_fixups = saved_num_fixups;
|
||||
|
||||
|
||||
memcpy (fixups, saved_fixups, sizeof (fixups[0]) * num_fixups);
|
||||
|
||||
saved_num_fixups = 0;
|
||||
@@ -142,7 +142,7 @@ gas_cgen_swap_fixups ()
|
||||
tmp = saved_num_fixups;
|
||||
saved_num_fixups = num_fixups;
|
||||
num_fixups = tmp;
|
||||
|
||||
|
||||
for (tmp = GAS_CGEN_MAX_FIXUPS; tmp--;)
|
||||
{
|
||||
tmp_fixup = saved_fixups [tmp];
|
||||
@@ -176,7 +176,7 @@ gas_cgen_record_fixup (frag, where, insn, length, operand, opinfo, symbol, offse
|
||||
symbolS * symbol;
|
||||
offsetT offset;
|
||||
{
|
||||
fixS * fixP;
|
||||
fixS *fixP;
|
||||
|
||||
/* It may seem strange to use operand->attrs and not insn->attrs here,
|
||||
but it is the operand that has a pc relative relocation. */
|
||||
@@ -215,7 +215,7 @@ gas_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp)
|
||||
int opinfo;
|
||||
expressionS * exp;
|
||||
{
|
||||
fixS * fixP;
|
||||
fixS *fixP;
|
||||
|
||||
/* It may seem strange to use operand->attrs and not insn->attrs here,
|
||||
but it is the operand that has a pc relative relocation. */
|
||||
@@ -250,21 +250,21 @@ const char *
|
||||
gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP)
|
||||
CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
|
||||
enum cgen_parse_operand_type want;
|
||||
const char ** strP;
|
||||
const char **strP;
|
||||
int opindex;
|
||||
int opinfo;
|
||||
enum cgen_parse_operand_result * resultP;
|
||||
bfd_vma * valueP;
|
||||
enum cgen_parse_operand_result *resultP;
|
||||
bfd_vma *valueP;
|
||||
{
|
||||
#ifdef __STDC__
|
||||
/* These are volatile to survive the setjmp. */
|
||||
char * volatile hold;
|
||||
enum cgen_parse_operand_result * volatile resultP_1;
|
||||
#else
|
||||
static char * hold;
|
||||
static enum cgen_parse_operand_result * resultP_1;
|
||||
static char *hold;
|
||||
static enum cgen_parse_operand_result *resultP_1;
|
||||
#endif
|
||||
const char * errmsg = NULL;
|
||||
const char *errmsg = NULL;
|
||||
expressionS exp;
|
||||
|
||||
if (want == CGEN_PARSE_OPERAND_INIT)
|
||||
@@ -275,7 +275,7 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP)
|
||||
|
||||
resultP_1 = resultP;
|
||||
hold = input_line_pointer;
|
||||
input_line_pointer = (char *) * strP;
|
||||
input_line_pointer = (char *) *strP;
|
||||
|
||||
/* We rely on md_operand to longjmp back to us.
|
||||
This is done via gas_cgen_md_operand. */
|
||||
@@ -283,41 +283,41 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP)
|
||||
{
|
||||
expr_jmp_buf_p = 0;
|
||||
input_line_pointer = (char *) hold;
|
||||
* resultP_1 = CGEN_PARSE_OPERAND_RESULT_ERROR;
|
||||
*resultP_1 = CGEN_PARSE_OPERAND_RESULT_ERROR;
|
||||
return "illegal operand";
|
||||
}
|
||||
|
||||
expr_jmp_buf_p = 1;
|
||||
expression (& exp);
|
||||
expression (&exp);
|
||||
expr_jmp_buf_p = 0;
|
||||
|
||||
* strP = input_line_pointer;
|
||||
*strP = input_line_pointer;
|
||||
input_line_pointer = hold;
|
||||
|
||||
/* FIXME: Need to check `want'. */
|
||||
|
||||
switch (exp.X_op)
|
||||
{
|
||||
case O_illegal :
|
||||
case O_illegal:
|
||||
errmsg = _("illegal operand");
|
||||
* resultP = CGEN_PARSE_OPERAND_RESULT_ERROR;
|
||||
*resultP = CGEN_PARSE_OPERAND_RESULT_ERROR;
|
||||
break;
|
||||
case O_absent :
|
||||
case O_absent:
|
||||
errmsg = _("missing operand");
|
||||
* resultP = CGEN_PARSE_OPERAND_RESULT_ERROR;
|
||||
*resultP = CGEN_PARSE_OPERAND_RESULT_ERROR;
|
||||
break;
|
||||
case O_constant :
|
||||
* valueP = exp.X_add_number;
|
||||
* resultP = CGEN_PARSE_OPERAND_RESULT_NUMBER;
|
||||
case O_constant:
|
||||
*valueP = exp.X_add_number;
|
||||
*resultP = CGEN_PARSE_OPERAND_RESULT_NUMBER;
|
||||
break;
|
||||
case O_register :
|
||||
* valueP = exp.X_add_number;
|
||||
* resultP = CGEN_PARSE_OPERAND_RESULT_REGISTER;
|
||||
case O_register:
|
||||
*valueP = exp.X_add_number;
|
||||
*resultP = CGEN_PARSE_OPERAND_RESULT_REGISTER;
|
||||
break;
|
||||
default :
|
||||
default:
|
||||
queue_fixup (opindex, opinfo, & exp);
|
||||
* valueP = 0;
|
||||
* resultP = CGEN_PARSE_OPERAND_RESULT_QUEUED;
|
||||
*valueP = 0;
|
||||
*resultP = CGEN_PARSE_OPERAND_RESULT_QUEUED;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -331,7 +331,7 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP)
|
||||
|
||||
void
|
||||
gas_cgen_md_operand (expressionP)
|
||||
expressionS * expressionP ATTRIBUTE_UNUSED;
|
||||
expressionS *expressionP ATTRIBUTE_UNUSED;
|
||||
{
|
||||
/* Don't longjmp if we're not called from within cgen_parse_operand(). */
|
||||
if (expr_jmp_buf_p)
|
||||
@@ -347,15 +347,15 @@ gas_cgen_md_operand (expressionP)
|
||||
|
||||
void
|
||||
gas_cgen_finish_insn (insn, buf, length, relax_p, result)
|
||||
const CGEN_INSN * insn;
|
||||
const CGEN_INSN *insn;
|
||||
CGEN_INSN_BYTES_PTR buf;
|
||||
unsigned int length;
|
||||
int relax_p;
|
||||
finished_insnS * result;
|
||||
finished_insnS *result;
|
||||
{
|
||||
int i;
|
||||
int relax_operand;
|
||||
char * f;
|
||||
char *f;
|
||||
unsigned int byte_len = length / 8;
|
||||
|
||||
/* ??? Target foo issues various warnings here, so one might want to provide
|
||||
@@ -371,7 +371,8 @@ gas_cgen_finish_insn (insn, buf, length, relax_p, result)
|
||||
space for the largest insn. */
|
||||
|
||||
if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAX))
|
||||
abort (); /* These currently shouldn't get here. */
|
||||
/* These currently shouldn't get here. */
|
||||
abort ();
|
||||
|
||||
/* Is there a relaxable insn with the relaxable operand needing a fixup? */
|
||||
|
||||
@@ -381,7 +382,7 @@ gas_cgen_finish_insn (insn, buf, length, relax_p, result)
|
||||
/* Scan the fixups for the operand affected by relaxing
|
||||
(i.e. the branch address). */
|
||||
|
||||
for (i = 0; i < num_fixups; ++ i)
|
||||
for (i = 0; i < num_fixups; ++i)
|
||||
{
|
||||
if (CGEN_OPERAND_ATTR_VALUE (cgen_operand_lookup_by_num (gas_cgen_cpu_desc, fixups[i].opindex),
|
||||
CGEN_OPERAND_RELAX))
|
||||
@@ -395,7 +396,7 @@ gas_cgen_finish_insn (insn, buf, length, relax_p, result)
|
||||
if (relax_operand != -1)
|
||||
{
|
||||
int max_len;
|
||||
fragS * old_frag;
|
||||
fragS *old_frag;
|
||||
|
||||
#ifdef TC_CGEN_MAX_RELAX
|
||||
max_len = TC_CGEN_MAX_RELAX (insn, byte_len);
|
||||
@@ -464,12 +465,12 @@ gas_cgen_finish_insn (insn, buf, length, relax_p, result)
|
||||
#define md_cgen_record_fixup_exp gas_cgen_record_fixup_exp
|
||||
#endif
|
||||
|
||||
fixP = md_cgen_record_fixup_exp (frag_now, f - frag_now->fr_literal,
|
||||
insn, length, operand,
|
||||
fixups[i].opinfo,
|
||||
& fixups[i].exp);
|
||||
if (result)
|
||||
result->fixups[i] = fixP;
|
||||
fixP = md_cgen_record_fixup_exp (frag_now, f - frag_now->fr_literal,
|
||||
insn, length, operand,
|
||||
fixups[i].opinfo,
|
||||
&fixups[i].exp);
|
||||
if (result)
|
||||
result->fixups[i] = fixP;
|
||||
}
|
||||
|
||||
if (result)
|
||||
@@ -497,11 +498,11 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
|
||||
valueT * valueP;
|
||||
segT seg ATTRIBUTE_UNUSED;
|
||||
{
|
||||
char * where = fixP->fx_frag->fr_literal + fixP->fx_where;
|
||||
char *where = fixP->fx_frag->fr_literal + fixP->fx_where;
|
||||
valueT value;
|
||||
/* canonical name, since used a lot */
|
||||
/* Canonical name, since used a lot. */
|
||||
CGEN_CPU_DESC cd = gas_cgen_cpu_desc;
|
||||
|
||||
|
||||
/* FIXME FIXME FIXME: The value we are passed in *valuep includes
|
||||
the symbol values. Since we are using BFD_ASSEMBLER, if we are
|
||||
doing this relocation the code in write.c is going to call
|
||||
@@ -515,11 +516,11 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
|
||||
|
||||
if (fixP->fx_addsy == (symbolS *) NULL)
|
||||
{
|
||||
value = * valueP;
|
||||
value = *valueP;
|
||||
fixP->fx_done = 1;
|
||||
}
|
||||
else if (fixP->fx_pcrel)
|
||||
value = * valueP;
|
||||
value = *valueP;
|
||||
else
|
||||
{
|
||||
value = fixP->fx_offset;
|
||||
@@ -530,7 +531,7 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
|
||||
else
|
||||
{
|
||||
/* We don't actually support subtracting a symbol. */
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("expression too complex"));
|
||||
}
|
||||
}
|
||||
@@ -560,16 +561,16 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
|
||||
CGEN_INSN_INT insn_value =
|
||||
cgen_get_insn_value (cd, where, CGEN_INSN_BITSIZE (insn));
|
||||
|
||||
/* ??? 0 is passed for `pc' */
|
||||
/* ??? 0 is passed for `pc'. */
|
||||
errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields,
|
||||
&insn_value, (bfd_vma) 0);
|
||||
cgen_put_insn_value (cd, where, CGEN_INSN_BITSIZE (insn),
|
||||
insn_value);
|
||||
}
|
||||
#else
|
||||
/* ??? 0 is passed for `pc' */
|
||||
errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields, where,
|
||||
(bfd_vma) 0);
|
||||
/* ??? 0 is passed for `pc'. */
|
||||
errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields, where,
|
||||
(bfd_vma) 0);
|
||||
#endif
|
||||
if (errmsg)
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line, "%s", errmsg);
|
||||
@@ -641,7 +642,7 @@ gas_cgen_tc_gen_reloc (section, fixP)
|
||||
asection * section ATTRIBUTE_UNUSED;
|
||||
fixS * fixP;
|
||||
{
|
||||
arelent * reloc;
|
||||
arelent *reloc;
|
||||
|
||||
reloc = (arelent *) xmalloc (sizeof (arelent));
|
||||
|
||||
@@ -659,12 +660,12 @@ gas_cgen_tc_gen_reloc (section, fixP)
|
||||
reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
|
||||
*reloc->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy);
|
||||
|
||||
/* Use fx_offset for these cases */
|
||||
if ( fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY
|
||||
/* Use fx_offset for these cases. */
|
||||
if (fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY
|
||||
|| fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT)
|
||||
reloc->addend = fixP->fx_offset;
|
||||
reloc->addend = fixP->fx_offset;
|
||||
else
|
||||
reloc->addend = fixP->fx_addnumber;
|
||||
reloc->addend = fixP->fx_addnumber;
|
||||
|
||||
reloc->address = fixP->fx_frag->fr_address + fixP->fx_where;
|
||||
return reloc;
|
||||
|
||||
4561
gas/config/tc-ia64.c
4561
gas/config/tc-ia64.c
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user