Tue Mar 24 18:30:58 1998 H.J. Lu <hjl@gnu.org>
* config/tc-i386.h (LinearAddress): Define. * config/tc-i386.c (md_assemble): If LinearAddress is set for the instruction, don't use a default segment.
This commit is contained in:
parent
3173839b6a
commit
dddc8a823d
@ -1,3 +1,9 @@
|
||||
Tue Mar 24 18:30:58 1998 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* config/tc-i386.h (LinearAddress): Define.
|
||||
* config/tc-i386.c (md_assemble): If LinearAddress is set for the
|
||||
instruction, don't use a default segment.
|
||||
|
||||
Mon Mar 23 18:53:40 1998 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* configure.in: (sh*-*-rtems*): Switched from ELF to COFF.
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* i386.c -- Assemble code for the Intel 80386
|
||||
Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 1997 Free Software Foundation.
|
||||
Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 1998
|
||||
Free Software Foundation.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
@ -1542,9 +1543,10 @@ md_assemble (line)
|
||||
exp->X_op_symbol = (symbolS *) 0;
|
||||
}
|
||||
|
||||
/* Find the default segment for the memory operand.
|
||||
Used to optimize out explicit segment specifications. */
|
||||
if (i.seg)
|
||||
/* Find the default segment for the memory
|
||||
operand. Used to optimize out explicit segment
|
||||
specifications. */
|
||||
if (i.seg && (t->opcode_modifier & LinearAddress) == 0)
|
||||
{
|
||||
unsigned int seg_index;
|
||||
|
||||
@ -2113,8 +2115,15 @@ i386_operand (operand_string)
|
||||
SKIP_WHITESPACE ();
|
||||
exp_seg = expression (exp);
|
||||
if (*input_line_pointer != '\0')
|
||||
as_bad ("unrecognized characters `%s' in expression",
|
||||
input_line_pointer);
|
||||
{
|
||||
/* This should be as_bad, but some versions of gcc, up to
|
||||
about 2.8 and egcs 1.01, generate a bogus @GOTOFF(%ebx)
|
||||
in certain cases. Oddly, the code in question turns out
|
||||
to work correctly anyhow, so we make this just a warning
|
||||
until those versions of gcc are obsolete. */
|
||||
as_warn ("warning: unrecognized characters `%s' in expression",
|
||||
input_line_pointer);
|
||||
}
|
||||
input_line_pointer = save_input_line_pointer;
|
||||
|
||||
if (exp->X_op == O_absent)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* tc-i386.h -- Header file for tc-i386.c
|
||||
Copyright (C) 1989, 92, 93, 94, 95, 96, 1997 Free Software Foundation.
|
||||
Copyright (C) 1989, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
@ -243,6 +243,7 @@ extern int tc_coff_sizemachdep PARAMS ((fragS *frag));
|
||||
#define Abs16 0x10000000
|
||||
#define Abs32 0x20000000
|
||||
#define Abs (Abs8|Abs16|Abs32)
|
||||
#define RegMMX 0x40000000 /* MMX register */
|
||||
|
||||
#define Byte (Reg8|Imm8|Imm8S)
|
||||
#define Word (Reg16|Imm16)
|
||||
@ -295,6 +296,8 @@ typedef struct
|
||||
#define ReverseRegRegmem 0x10000
|
||||
#define Data16 0x20000 /* needs data prefix if in 32-bit mode */
|
||||
#define Data32 0x40000 /* needs data prefix if in 16-bit mode */
|
||||
#define iclrKludge 0x80000 /* used to convert clr to xor */
|
||||
#define LinearAddress 0x100000 /* uses linear address (no segment) */
|
||||
|
||||
/* (opcode_modifier & COMES_IN_ALL_SIZES) is true if the
|
||||
instuction comes in byte, word, and dword sizes and is encoded into
|
||||
@ -396,10 +399,18 @@ extern const struct relax_type md_relax_table[];
|
||||
|
||||
extern int flag_16bit_code;
|
||||
|
||||
#ifdef BFD_ASSEMBLER
|
||||
#define md_maybe_text() \
|
||||
((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
|
||||
#else
|
||||
#define md_maybe_text() \
|
||||
(now_seg != data_section && now_seg != bss_section)
|
||||
#endif
|
||||
|
||||
#define md_do_align(n, fill, len, max, around) \
|
||||
if ((n) && !need_pass_2 \
|
||||
&& (!(fill) || ((char)*(fill) == (char)0x90 && (len) == 1)) \
|
||||
&& now_seg != data_section && now_seg != bss_section) \
|
||||
&& md_maybe_text ()) \
|
||||
{ \
|
||||
char *p; \
|
||||
p = frag_var (rs_align_code, 15, 1, (relax_substateT) max, \
|
||||
@ -429,4 +440,6 @@ void i386_print_statistics PARAMS ((FILE *));
|
||||
extern void sco_id PARAMS ((void));
|
||||
#endif
|
||||
|
||||
#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
|
||||
|
||||
/* end of tc-i386.h */
|
||||
|
Loading…
Reference in New Issue
Block a user