* config/aout_gnu.h: Fix formatting.
* config/atof-vax.c: Likewise.
* config/m68k-parse.h: Likewise.
* config/m88k-opcode.h: Likewise.
* config/obj-elf.c: Likewise.
* config/tc-arm.c: Likewise.
* config/tc-cris.c: Likewise.
* config/tc-i386.c: Likewise.
* config/tc-ia64.c: Likewise.
* config/tc-mn10300.c: Likewise.
* config/te-386bsd.h: Likewise.
* config/te-hppa.h: Likewise.
* config/te-nbsd.h: Likewise.
* config/te-ppcnw.h: Likewise.
* config/te-sparcaout.h: Likewise.
* config/te-tmips.h: Likewise.
* config/vax-inst.h: Likewise.
* config/vms-conf.h: Likewise.
+2000-11-14 Kazu Hirata <kazu@hxi.com>
+
+ * config/aout_gnu.h: Fix formatting.
+ * config/atof-vax.c: Likewise.
+ * config/m68k-parse.h: Likewise.
+ * config/m88k-opcode.h: Likewise.
+ * config/obj-elf.c: Likewise.
+ * config/tc-arm.c: Likewise.
+ * config/tc-cris.c: Likewise.
+ * config/tc-i386.c: Likewise.
+ * config/tc-ia64.c: Likewise.
+ * config/tc-mn10300.c: Likewise.
+ * config/te-386bsd.h: Likewise.
+ * config/te-hppa.h: Likewise.
+ * config/te-nbsd.h: Likewise.
+ * config/te-ppcnw.h: Likewise.
+ * config/te-sparcaout.h: Likewise.
+ * config/te-tmips.h: Likewise.
+ * config/vax-inst.h: Likewise.
+ * config/vms-conf.h: Likewise.
+
2000-11-14 Jakub Jelinek <jakub@redhat.com>
* config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits.
#endif /* TC_SPARC or TC_A29K */
-
#define __GNU_EXEC_MACROS__
#ifndef __STRUCT_EXEC_OVERRIDE__
sizeof (struct exec))
#endif
-
#ifndef N_DATOFF
#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text )
#endif
unsigned char r_addend[4];
};
-
#define RELOC_EXT_BITS_EXTERN_BIG 0x80
#define RELOC_EXT_BITS_EXTERN_LITTLE 0x01
/* The standard, old-fashioned, Berkeley compatible relocation struct */
-
-
#ifdef TC_I860
/* NOTE: three bits max, see struct reloc_info_i860.r_type */
enum i860_reloc_type
NO_SPEC = 0, PAIR, HIGH, HIGHADJ,
};
-
struct reloc_info_i860
{
unsigned long r_address;
#endif /* TC_I860 */
-
struct reloc_std_bytes
{
unsigned char r_address[4];
static int what_kind_of_float PARAMS ((int, int *, long *));
static char *atof_vax PARAMS ((char *, int, LITTLENUM_TYPE *));
-/* Precision in LittleNums. */
+/* Precision in LittleNums. */
#define MAX_PRECISION (8)
#define H_PRECISION (8)
#define G_PRECISION (4)
#define D_PRECISION (4)
#define F_PRECISION (2)
-/* Length in LittleNums of guard bits. */
+/* Length in LittleNums of guard bits. */
#define GUARD (2)
int flonum_gen2vax PARAMS ((int format_letter, FLONUM_TYPE * f,
LITTLENUM_TYPE * words));
-/* Number of chars in flonum type 'letter'. */
+/* Number of chars in flonum type 'letter'. */
static int
atof_vax_sizeof (letter)
int letter;
*words = 0x8000; /* Floating Reserved Operand Code */
}
\f
-static int /* 0 means letter is OK. */
+static int /* 0 means letter is OK. */
what_kind_of_float (letter, precisionP, exponent_bitsP)
int letter; /* In: lowercase please. What kind of float? */
- int *precisionP; /* Number of 16-bit words in the float. */
- long *exponent_bitsP; /* Number of exponent bits. */
+ int *precisionP; /* Number of 16-bit words in the float. */
+ long *exponent_bitsP; /* Number of exponent bits. */
{
- int retval; /* 0: OK. */
+ int retval; /* 0: OK. */
retval = 0;
switch (letter)
* *
\***********************************************************************/
-static char * /* Return pointer past text consumed. */
+static char * /* Return pointer past text consumed. */
atof_vax (str, what_kind, words)
- char *str; /* Text to convert to binary. */
+ char *str; /* Text to convert to binary. */
int what_kind; /* 'd', 'f', 'g', 'h' */
- LITTLENUM_TYPE *words; /* Build the binary here. */
+ LITTLENUM_TYPE *words; /* Build the binary here. */
{
FLONUM_TYPE f;
LITTLENUM_TYPE bits[MAX_PRECISION + MAX_PRECISION + GUARD];
- /* Extra bits for zeroed low-order bits. */
+ /* Extra bits for zeroed low-order bits. */
/* The 1st MAX_PRECISION are zeroed, */
- /* the last contain flonum bits. */
+ /* the last contain flonum bits. */
char *return_value;
- int precision; /* Number of 16-bit words in the format. */
+ int precision; /* Number of 16-bit words in the format. */
long exponent_bits;
return_value = str;
if (what_kind_of_float (what_kind, &precision, &exponent_bits))
{
- return_value = NULL; /* We lost. */
+ return_value = NULL; /* We lost. */
make_invalid_floating_point_number (words);
}
/* Use more LittleNums than seems */
/* necessary: the highest flonum may have */
- /* 15 leading 0 bits, so could be useless. */
+ /* 15 leading 0 bits, so could be useless. */
f.high = f.low + precision - 1 + GUARD;
if (atof_generic (&return_value, ".", "eE", &f))
* Out: a vax floating-point bit pattern.
*/
-int /* 0: OK. */
+int /* 0: OK. */
flonum_gen2vax (format_letter, f, words)
- int format_letter; /* One of 'd' 'f' 'g' 'h'. */
+ int format_letter; /* One of 'd' 'f' 'g' 'h'. */
FLONUM_TYPE *f;
- LITTLENUM_TYPE *words; /* Deliver answer here. */
+ LITTLENUM_TYPE *words; /* Deliver answer here. */
{
LITTLENUM_TYPE *lp;
int precision;
long exponent_bits;
- int return_value; /* 0 == OK. */
+ int return_value; /* 0 == OK. */
return_value = what_kind_of_float (format_letter, &precision, &exponent_bits);
{
if (f->low > f->leader)
{
- /* 0.0e0 seen. */
+ /* 0.0e0 seen. */
memset (words, '\0', sizeof (LITTLENUM_TYPE) * precision);
}
else
exponent_skippage++);;
exponent_1 = f->exponent + f->leader + 1 - f->low;
- /* Radix LITTLENUM_RADIX, point just higher than f->leader. */
+ /* Radix LITTLENUM_RADIX, point just higher than f->leader. */
exponent_2 = exponent_1 * LITTLENUM_NUMBER_OF_BITS;
- /* Radix 2. */
+ /* Radix 2. */
exponent_3 = exponent_2 - exponent_skippage;
- /* Forget leading zeros, forget 1st bit. */
+ /* Forget leading zeros, forget 1st bit. */
exponent_4 = exponent_3 + (1 << (exponent_bits - 1));
- /* Offset exponent. */
+ /* Offset exponent. */
if (exponent_4 & ~mask[exponent_bits])
{
{
lp = words;
- /* Word 1. Sign, exponent and perhaps high bits. */
- /* Assume 2's complement integers. */
+ /* Word 1. Sign, exponent and perhaps high bits. */
+ /* Assume 2's complement integers. */
word1 = (((exponent_4 & mask[exponent_bits]) << (15 - exponent_bits))
| ((f->sign == '+') ? 0 : 0x8000)
| next_bits (15 - exponent_bits));
*lp++ = word1;
- /* The rest of the words are just mantissa bits. */
+ /* The rest of the words are just mantissa bits. */
for (; lp < words + precision; lp++)
{
*lp = next_bits (LITTLENUM_NUMBER_OF_BITS);
return (return_value);
} /* flonum_gen2vax() */
-
/* JF this used to be in vax.c but this looks like a better place for it */
/*
* Number of chars we used for the literal.
*/
-#define MAXIMUM_NUMBER_OF_LITTLENUMS (8) /* For .hfloats. */
+#define MAXIMUM_NUMBER_OF_LITTLENUMS (8) /* For .hfloats. */
char *
md_atof (what_statement_type, literalP, sizeP)
MACSR, /* MAC Status Reg */
MASK, /* Modulus Reg */
- /* These have to be grouped together for the movec instruction to work. */
+ /* These have to be grouped together for the movec instruction to work. */
USP, /* User Stack Pointer */
ISP, /* Interrupt stack pointer */
SFC,
ZADDR7,
/* Upper and lower half of data and address registers. Order *must*
- be DATAxL, ADDRxL, DATAxU, ADDRxU. */
+ be DATAxL, ADDRxL, DATAxU, ADDRxU. */
DATA0L, /* lower half of data registers */
DATA1L,
DATA2L,
char *op_spec;
};
-/* and introducing... the Motorola 88100 and 88110 instruction sets... */
+/* and introducing... the Motorola 88100 and 88110 instruction sets... */
/* By default, include the 88110 instructions. */
#define MC88110
p = strchr (symbol_get_obj (sym)->versioned_name, ELF_VER_CHR);
if (p)
rp = strrchr (p, ELF_VER_CHR);
- if (!p || p [1] == '\0' || rp [1] == '\0')
+ if (!p || p [1] == '\0' || rp [1] == '\0')
{
as_bad (_("missing version name in `%s' for symbol `%s'"),
symbol_get_obj (sym)->versioned_name,
#endif
}
-/* It removes any unneeded versioned symbols from the symbol table. */
+/* It removes any unneeded versioned symbols from the symbol table. */
void
elf_frob_file_before_adjust ()
str = original_case_string;
#endif
copy_of_str = str;
-
+
q += 4;
skip_whitespace (q);
{
const char *operand;
void (*fn) PARAMS ((void));
- } syntax_table[] =
+ } syntax_table[] =
{{SYNTAX_ENFORCE_REG_PREFIX, cris_force_reg_prefix},
{SYNTAX_RELAX_REG_PREFIX, cris_relax_reg_prefix},
{SYNTAX_USER_SYM_LEADING_UNDERSCORE, cris_sym_leading_underscore},
Initial production is 'expr'.
-
addOp + | -
alpha [a-zA-Z]
| DR0 | DR1 | DR2 | DR3 | DR6 | DR7
| TR3 | TR4 | TR5 | TR6 | TR7
-
We simplify the grammar in obvious places (e.g., register parsing is
done by calling parse_register) and eliminate immediate left recursion
to implement a recursive-descent parser.
{
char *op_string; /* The string being parsed. */
int got_a_float; /* Whether the operand is a float. */
- int op_modifier; /* Operand modifier. */
+ int op_modifier; /* Operand modifier. */
int is_mem; /* 1 if operand is memory reference. */
const reg_entry *reg; /* Last register reference found. */
char *disp; /* Displacement string being built. */
static int intel_e10_1 PARAMS ((void));
static int intel_e11 PARAMS ((void));
-
static int
i386_intel_operand (operand_string, got_a_float)
char *operand_string;
return ret;
}
-
/* expr SHORT e05
| e05 */
static int
return intel_e05 ();
}
-
/* e05 e06 e05'
- e05' addOp e06 e05'
+ e05' addOp e06 e05'
| Empty */
static int
intel_e05 ()
/* e05' Empty */
else
return 1;
-}
-
+}
/* e06 e09 e06'
return (intel_e09 () && intel_e06_1 ());
}
-
+
/* e06' Empty */
- else
+ else
return 1;
}
-
/* e09 OFFSET e10 e09'
| e10 e09'
{
intel_match_token ('[');
intel_parser.is_mem = 1;
-
+
/* Add a '+' to the displacement string if necessary. */
if (*intel_parser.disp != '\0')
strcat (intel_parser.disp, "+");
return 1;
}
-
/* e11 ( expr )
| [ expr ]
| BYTE
| DWORD
| QWORD
| XWORD
- | $
+ | $
| .
| register
| id
{
intel_match_token ('[');
intel_parser.is_mem = 1;
-
+
/* Operands for jump/call inside brackets denote absolute addresses. */
if (current_templates->start->opcode_modifier & Jump
|| current_templates->start->opcode_modifier & JumpDword
return (intel_expr () && intel_match_token (']'));
}
- /* e11 BYTE
+ /* e11 BYTE
| WORD
| DWORD
| QWORD
return 0;
}
- /* What follows must be a valid scale. */
+ /* What follows must be a valid scale. */
if (intel_match_token ('*')
&& strchr ("01248", *cur_token.str))
{
parsed as an immediate expression after we're done. */
else if (intel_parser.op_modifier == OFFSET_FLAT)
strcat (intel_parser.disp, reg->reg_name);
-
+
/* It's neither base nor index nor offset. */
else
{
return 1;
}
-
+
/* e11 id */
else if (cur_token.code == T_ID)
{
return 0;
}
- /* The constant is followed by `* reg', so it must be
+ /* The constant is followed by `* reg', so it must be
a valid scale. */
if (strchr ("01248", *save_str))
{
return 1;
}
-
as_bad (_("Unrecognized token '%s'"), cur_token.str);
return 0;
}
-
/* Match the given token against cur_token. If they match, read the next
token from the operand string. */
static int
}
}
-
/* Read a new token from intel_parser.op_string and store it in cur_token. */
static void
intel_get_token ()
new_token.reg = NULL;
new_token.str = NULL;
- /* Free the memory allocated to the previous token and move
+ /* Free the memory allocated to the previous token and move
cur_token to prev_token. */
if (prev_token.str)
free (prev_token.str);
/* Recognize special symbol names [0-9][bf]. */
if (strlen (intel_parser.op_string) == 2
- && (intel_parser.op_string[1] == 'b'
+ && (intel_parser.op_string[1] == 'b'
|| intel_parser.op_string[1] == 'f'))
new_token.code = T_ID;
}
cur_token = new_token;
}
-
/* Put cur_token back into the token stream and make cur_token point to
prev_token. */
static void
intel_parser.op_string -= strlen (cur_token.str);
free (cur_token.str);
cur_token = prev_token;
-
+
/* Forget prev_token. */
prev_token.code = T_NIL;
prev_token.reg = NULL;
+ ((slot_addr & 0x3) - (first_addr & 0x3)));
return index;
}
-
+
/* Given a complete record list, process any records which have
unresolved fields, (ie length counts for a prologue). After
this has been run, all neccessary information should be available
else
value = fixp->fx_offset;
-
/* If the fix is relative to a symbol which is not defined, or not
in the same segment as the fix, we cannot resolve it here. */
if (fixp->fx_addsy != NULL
/* te-386bsd.h -- 386BSD target environment declarations.
Copyright (C) 1987, 1990, 1991, 1992 Free Software Foundation, Inc.
-
+
This file is part of GAS, the GNU Assembler.
-
+
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-
+
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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
/* Machine specific defines for the PA machine
Copyright 1987, 1991, 1992 Free Software Foundation, Inc.
-
+
This file is part of GAS, the GNU Assembler.
-
+
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-
+
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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
/* te-nbsd.h -- NetBSD target environment declarations.
Copyright (C) 1987, 90, 91, 92, 94, 95, 1998 Free Software Foundation, Inc.
-
+
This file is part of GAS, the GNU Assembler.
-
+
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-
+
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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
/* te-ppcnw.h -- Power PC running Netware environment declarations.
Copyright (C) 1994 Free Software Foundation, Inc.
-
+
This file is part of GAS, the GNU Assembler.
-
+
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-
+
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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
/* te-sparcaout.h -- embedded sparc-aout target environment declarations.
Copyright (C) 1996 Free Software Foundation, Inc.
-
+
This file is part of GAS, the GNU Assembler.
-
+
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-
+
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/* This file is te-tmips.h and is intended to provide support for
- traditional mips targets like mips-dde-sysv4.2MP (Supermax ) ,
+/* This file is te-tmips.h and is intended to provide support for
+ traditional mips targets like mips-dde-sysv4.2MP (Supermax ) ,
mips-sni-sysv4* (Sinix) etc. The base for this file is te-generic.h.
Created by Koundinya.K < kk@ddeorg.soft.net > with the help of
Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>. */
{
short int vop_ndx; /* -1, or index register. eg 7=[R7] */
short int vop_reg; /* -1, or register number. eg @I^#=0xF */
- /* Helps distinguish "abs" from "abs(PC)". */
+ /* Helps distinguish "abs" from "abs(PC)". */
short int vop_mode; /* addressing mode 4 bits. eg I^#=0x9 */
char vop_short; /* operand displacement length as written */
/* ' '=none, "bilsw"=B^I^L^S^W^. */
unsigned char vop_nbytes; /* number of bytes in datum */
};
-
typedef long vax_opcodeT; /* For initialising array of opcodes */
/* Some synthetic opcodes > 16 bits! */
#define VAX_ABSOLUTE_MODE (0x9F)/* Use as @#... */
#define VAX_BRB (0x11) /* Canonical branch. */
#define VAX_BRW (0x31) /* Another canonical branch */
-#define VAX_WIDEN_WORD (0x20) /* Add this to byte branch to get word br. */
+#define VAX_WIDEN_WORD (0x20) /* Add this to byte branch to get word br. */
#define VAX_WIDEN_LONG (0x6) /* Add this to byte branch to get long jmp.*/
/* Needs VAX_PC_RELATIVE_MODE byte after it*/
#undef OBJ_MAYBE_VMS
/* Used for some of the COFF configurations, when the COFF code needs
- to select something based on the CPU type before it knows it... */
+ to select something based on the CPU type before it knows it... */
#undef I386COFF
#undef M68KCOFF
#undef M88KCOFF