mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-03 19:36:46 +08:00
(md_operand): Replaced empty function in .c file with empty macro in .h file.
This commit is contained in:
@ -1475,11 +1475,6 @@ md_apply_fix (fixP, val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
DEFUN (md_operand, (expressionP), expressionS * expressionP)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int md_long_jump_size;
|
int md_long_jump_size;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -39,4 +39,6 @@
|
|||||||
#define TC_START_LABEL(ch, ptr) (ch == ':' && start_label(ptr))
|
#define TC_START_LABEL(ch, ptr) (ch == ':' && start_label(ptr))
|
||||||
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
|
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
|
||||||
|
|
||||||
|
#define md_operand(x)
|
||||||
|
|
||||||
/* end of tc-h8500.h */
|
/* end of tc-h8500.h */
|
||||||
|
@ -17,23 +17,118 @@
|
|||||||
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, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#ifndef TC_I386
|
||||||
#define TC_I386 1
|
#define TC_I386 1
|
||||||
|
|
||||||
#define AOUT_MACHTYPE 100
|
#ifdef TE_LYNX
|
||||||
#define REVERSE_SORT_RELOCS
|
#define TARGET_FORMAT "coff-i386-lynx"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define NO_LISTING
|
#ifdef BFD_ASSEMBLER
|
||||||
|
/* This is used to determine relocation types in tc-i386.c. The first
|
||||||
|
parameter is the current relocation type, the second one is the desired
|
||||||
|
type. The idea is that if the original type is already some kind of PIC
|
||||||
|
relocation, we leave it alone, otherwise we give it the desired type */
|
||||||
|
|
||||||
|
#define TC_RELOC(X,Y) (((X) != BFD_RELOC_386_PLT32 && \
|
||||||
|
(X) != BFD_RELOC_386_GOTOFF && \
|
||||||
|
(X) != BFD_RELOC_386_GOT32 && \
|
||||||
|
(X) != BFD_RELOC_386_GOTPC) ? Y : X)
|
||||||
|
|
||||||
|
#define tc_fix_adjustable(X) tc_i386_fix_adjustable(X)
|
||||||
|
|
||||||
|
/* This is the relocation type for direct references to GLOBAL_OFFSET_TABLE.
|
||||||
|
* It comes up in complicated expressions such as
|
||||||
|
* _GLOBAL_OFFSET_TABLE_+[.-.L284], which cannot be expressed normally with
|
||||||
|
* the regular expressions. The fixup specified here when used at runtime
|
||||||
|
* implies that we should add the address of the GOT to the specified location,
|
||||||
|
* and as a result we have simplified the expression into something we can use.
|
||||||
|
*/
|
||||||
|
#define TC_RELOC_GLOBAL_OFFSET_TABLE BFD_RELOC_386_GOTPC
|
||||||
|
|
||||||
|
/* This expression evaluates to false if the relocation is for a local object
|
||||||
|
for which we still want to do the relocation at runtime. True if we
|
||||||
|
are willing to perform this relocation while building the .o file.
|
||||||
|
This is only used for pcrel relocations, so GOTOFF does not need to be
|
||||||
|
checked here. I am not sure if some of the others are ever used with
|
||||||
|
pcrel, but it is easier to be safe than sorry. */
|
||||||
|
|
||||||
|
#define TC_RELOC_RTSYM_LOC_FIXUP(X) \
|
||||||
|
((X) != BFD_RELOC_386_PLT32 && \
|
||||||
|
(X) != BFD_RELOC_386_GOT32 && \
|
||||||
|
(X) != BFD_RELOC_386_GOTPC)
|
||||||
|
|
||||||
|
#define TARGET_ARCH bfd_arch_i386
|
||||||
|
#define TARGET_BYTES_BIG_ENDIAN 0
|
||||||
|
|
||||||
|
#ifdef OBJ_AOUT
|
||||||
|
#ifdef TE_NetBSD
|
||||||
|
#define TARGET_FORMAT "a.out-i386-netbsd"
|
||||||
|
#endif
|
||||||
|
#ifdef TE_386BSD
|
||||||
|
#define TARGET_FORMAT "a.out-i386-bsd"
|
||||||
|
#endif
|
||||||
|
#ifdef TE_LINUX
|
||||||
|
#define TARGET_FORMAT "a.out-i386-linux"
|
||||||
|
#endif
|
||||||
|
#ifdef TE_Mach
|
||||||
|
#define TARGET_FORMAT "a.out-mach3"
|
||||||
|
#endif
|
||||||
|
#ifndef TARGET_FORMAT
|
||||||
|
#define TARGET_FORMAT "a.out-i386"
|
||||||
|
#endif
|
||||||
|
#endif /* OBJ_AOUT */
|
||||||
|
|
||||||
|
#ifdef OBJ_ELF
|
||||||
|
#define TARGET_FORMAT "elf32-i386"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else /* ! BFD_ASSEMBLER */
|
||||||
|
|
||||||
|
/* COFF STUFF */
|
||||||
|
|
||||||
|
#define COFF_MAGIC I386MAGIC
|
||||||
|
#define BFD_ARCH bfd_arch_i386
|
||||||
|
#define COFF_FLAGS F_AR32WR
|
||||||
|
#define TC_COUNT_RELOC(x) ((x)->fx_addsy /* ||(x)->fx_subsy||(x)->fx_offset */)
|
||||||
|
#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype(fixP)
|
||||||
|
extern short tc_coff_fix2rtype ();
|
||||||
|
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
|
||||||
|
extern int tc_coff_sizemachdep PARAMS ((fragS *frag));
|
||||||
|
#define SUB_SEGMENT_ALIGN(SEG) 2
|
||||||
|
|
||||||
|
/* Need this for PIC relocations */
|
||||||
|
#define NEED_FX_R_TYPE
|
||||||
|
|
||||||
|
#define AOUT_MACHTYPE /* 100 */ 0
|
||||||
|
#undef REVERSE_SORT_RELOCS
|
||||||
|
|
||||||
|
#endif /* ! BFD_ASSEMBLER */
|
||||||
|
|
||||||
|
#ifdef BFD_ASSEMBLER
|
||||||
|
#define NO_RELOC BFD_RELOC_NONE
|
||||||
|
#else
|
||||||
|
#define NO_RELOC 0
|
||||||
|
#endif
|
||||||
|
#define tc_coff_symbol_emit_hook(a) ; /* not used */
|
||||||
|
|
||||||
|
#ifndef OBJ_AOUT
|
||||||
|
/* Local labels starts with .L */
|
||||||
|
#define LOCAL_LABEL(name) (name[0] == '.' \
|
||||||
|
&& (name[1] == 'L' || name[1] == 'X' || name[1] == '.'))
|
||||||
|
#define FAKE_LABEL_NAME ".L0\001"
|
||||||
|
#endif
|
||||||
|
#define LOCAL_LABELS_FB
|
||||||
|
|
||||||
#define tc_aout_pre_write_hook(x) {;} /* not used */
|
#define tc_aout_pre_write_hook(x) {;} /* not used */
|
||||||
#define tc_crawl_symbol_chain(a) {;} /* not used */
|
#define tc_crawl_symbol_chain(a) {;} /* not used */
|
||||||
#define tc_headers_hook(a) {;} /* not used */
|
#define tc_headers_hook(a) {;} /* not used */
|
||||||
|
|
||||||
#define MAX_OPERANDS 3 /* max operands per insn */
|
#define MAX_OPERANDS 3 /* max operands per insn */
|
||||||
#define MAX_PREFIXES 4 /* max prefixes per opcode */
|
#define MAX_PREFIXES 5 /* max prefixes per opcode */
|
||||||
#define MAX_IMMEDIATE_OPERANDS 2/* max immediates per insn */
|
#define MAX_IMMEDIATE_OPERANDS 2/* max immediates per insn */
|
||||||
#define MAX_MEMORY_OPERANDS 2 /* max memory ref per insn
|
#define MAX_MEMORY_OPERANDS 2 /* max memory ref per insn (lcall uses 2) */
|
||||||
* lcall uses 2
|
|
||||||
*/
|
|
||||||
/* we define the syntax here (modulo base,index,scale syntax) */
|
/* we define the syntax here (modulo base,index,scale syntax) */
|
||||||
#define REGISTER_PREFIX '%'
|
#define REGISTER_PREFIX '%'
|
||||||
#define IMMEDIATE_PREFIX '$'
|
#define IMMEDIATE_PREFIX '$'
|
||||||
@ -41,6 +136,7 @@
|
|||||||
#define PREFIX_SEPERATOR '/'
|
#define PREFIX_SEPERATOR '/'
|
||||||
|
|
||||||
#define TWO_BYTE_OPCODE_ESCAPE 0x0f
|
#define TWO_BYTE_OPCODE_ESCAPE 0x0f
|
||||||
|
#define NOP_OPCODE (char) 0x90
|
||||||
|
|
||||||
/* register numbers */
|
/* register numbers */
|
||||||
#define EBP_REG_NUM 5
|
#define EBP_REG_NUM 5
|
||||||
@ -125,7 +221,8 @@
|
|||||||
#define SMALLEST_DISP_TYPE(num) \
|
#define SMALLEST_DISP_TYPE(num) \
|
||||||
fits_in_signed_byte(num) ? (Disp8|Disp32|Abs8|Abs32) : (Disp32|Abs32)
|
fits_in_signed_byte(num) ? (Disp8|Disp32|Abs8|Abs32) : (Disp32|Abs32)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
/* instruction name sans width suffix ("mov" for movl insns) */
|
/* instruction name sans width suffix ("mov" for movl insns) */
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
@ -166,6 +263,8 @@ typedef struct {
|
|||||||
#define JumpByte 0x4000
|
#define JumpByte 0x4000
|
||||||
#define JumpDword 0x8000
|
#define JumpDword 0x8000
|
||||||
#define ReverseRegRegmem 0x10000
|
#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 */
|
||||||
|
|
||||||
/* (opcode_modifier & COMES_IN_ALL_SIZES) is true if the
|
/* (opcode_modifier & COMES_IN_ALL_SIZES) is true if the
|
||||||
instuction comes in byte, word, and dword sizes and is encoded into
|
instuction comes in byte, word, and dword sizes and is encoded into
|
||||||
@ -183,7 +282,8 @@ typedef struct {
|
|||||||
'operand_types[i] = Reg|Imm' specifies that operand i can be
|
'operand_types[i] = Reg|Imm' specifies that operand i can be
|
||||||
either a register or an immediate operand */
|
either a register or an immediate operand */
|
||||||
unsigned int operand_types[3];
|
unsigned int operand_types[3];
|
||||||
} template;
|
}
|
||||||
|
template;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
'templates' is for grouping together 'template' structures for opcodes
|
'templates' is for grouping together 'template' structures for opcodes
|
||||||
@ -192,41 +292,72 @@ typedef struct {
|
|||||||
The templates themselves start at START and range up to (but not including)
|
The templates themselves start at START and range up to (but not including)
|
||||||
END.
|
END.
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
template *start;
|
template *start;
|
||||||
template *end;
|
template *end;
|
||||||
} templates;
|
} templates;
|
||||||
|
|
||||||
/* these are for register name --> number & type hash lookup */
|
/* these are for register name --> number & type hash lookup */
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
char *reg_name;
|
char *reg_name;
|
||||||
unsigned int reg_type;
|
unsigned int reg_type;
|
||||||
unsigned int reg_num;
|
unsigned int reg_num;
|
||||||
} reg_entry;
|
}
|
||||||
|
|
||||||
typedef struct {
|
reg_entry;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
char *seg_name;
|
char *seg_name;
|
||||||
unsigned int seg_prefix;
|
unsigned int seg_prefix;
|
||||||
} seg_entry;
|
}
|
||||||
|
|
||||||
|
seg_entry;
|
||||||
|
|
||||||
/* these are for prefix name --> prefix code hash lookup */
|
/* these are for prefix name --> prefix code hash lookup */
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
char *prefix_name;
|
char *prefix_name;
|
||||||
unsigned char prefix_code;
|
unsigned char prefix_code;
|
||||||
} prefix_entry;
|
}
|
||||||
|
|
||||||
|
prefix_entry;
|
||||||
|
|
||||||
/* 386 operand encoding bytes: see 386 book for details of this. */
|
/* 386 operand encoding bytes: see 386 book for details of this. */
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
unsigned regmem:3; /* codes register or memory operand */
|
unsigned regmem:3; /* codes register or memory operand */
|
||||||
unsigned reg:3; /* codes register operand (or extended opcode) */
|
unsigned reg:3; /* codes register operand (or extended opcode) */
|
||||||
unsigned mode:2; /* how to interpret regmem & reg */
|
unsigned mode:2; /* how to interpret regmem & reg */
|
||||||
} modrm_byte;
|
}
|
||||||
|
|
||||||
|
modrm_byte;
|
||||||
|
|
||||||
/* 386 opcode byte to code indirect addressing. */
|
/* 386 opcode byte to code indirect addressing. */
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
unsigned base:3;
|
unsigned base:3;
|
||||||
unsigned index:3;
|
unsigned index:3;
|
||||||
unsigned scale:2;
|
unsigned scale:2;
|
||||||
} base_index_byte;
|
}
|
||||||
|
|
||||||
|
base_index_byte;
|
||||||
|
|
||||||
|
/* The name of the global offset table generated by the compiler. Allow
|
||||||
|
this to be overridden if need be. */
|
||||||
|
#ifndef GLOBAL_OFFSET_TABLE_NAME
|
||||||
|
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BFD_ASSEMBLER
|
||||||
|
void i386_validate_fix ();
|
||||||
|
#define TC_VALIDATE_FIX(FIXP,SEGTYPE,SKIP) i386_validate_fix(FIXP)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* TC_I386 */
|
||||||
|
|
||||||
|
#define md_operand(x)
|
||||||
|
|
||||||
/* end of tc-i386.h */
|
/* end of tc-i386.h */
|
||||||
|
@ -1024,11 +1024,6 @@ md_apply_fix (fixP, val)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
|
||||||
DEFUN (md_operand, (expressionP), expressionS * expressionP)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int md_long_jump_size;
|
int md_long_jump_size;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -51,4 +51,6 @@
|
|||||||
#define NEED_FX_R_TYPE 1
|
#define NEED_FX_R_TYPE 1
|
||||||
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
|
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
|
||||||
|
|
||||||
|
#define md_operand(x)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1986,17 +1986,6 @@ md_undefined_symbol (name)
|
|||||||
return 0;
|
return 0;
|
||||||
} /* md_undefined_symbol() */
|
} /* md_undefined_symbol() */
|
||||||
|
|
||||||
/* Parse an operand that is machine-specific.
|
|
||||||
We just return without modifying the expression if we have nothing
|
|
||||||
to do. */
|
|
||||||
|
|
||||||
/* ARGSUSED */
|
|
||||||
void
|
|
||||||
md_operand (expressionP)
|
|
||||||
expressionS *expressionP;
|
|
||||||
{
|
|
||||||
} /* md_operand() */
|
|
||||||
|
|
||||||
/* Round up a section size to the appropriate boundary. */
|
/* Round up a section size to the appropriate boundary. */
|
||||||
valueT
|
valueT
|
||||||
md_section_align (segment, size)
|
md_section_align (segment, size)
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
#define tc_crawl_symbol_chain(a) {;} /* don't need it. */
|
#define tc_crawl_symbol_chain(a) {;} /* don't need it. */
|
||||||
#define tc_aout_pre_write_hook(a) {;}
|
#define tc_aout_pre_write_hook(a) {;}
|
||||||
|
|
||||||
|
#define md_operand(x)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Local Variables:
|
* Local Variables:
|
||||||
* comment-column: 0
|
* comment-column: 0
|
||||||
|
@ -1084,11 +1084,6 @@ md_apply_fix (fixP, val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
DEFUN (md_operand, (expressionP), expressionS * expressionP)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int md_long_jump_size;
|
int md_long_jump_size;
|
||||||
|
|
||||||
/* Put number into target byte order */
|
/* Put number into target byte order */
|
||||||
|
@ -43,5 +43,7 @@
|
|||||||
#define TC_CONS_RELOC tc_cons_reloc
|
#define TC_CONS_RELOC tc_cons_reloc
|
||||||
#define DONT_OVERFLOW
|
#define DONT_OVERFLOW
|
||||||
int tc_cons_reloc;
|
int tc_cons_reloc;
|
||||||
/* end of tc-w65.h */
|
|
||||||
|
|
||||||
|
#define md_operand(x)
|
||||||
|
|
||||||
|
/* end of tc-w65.h */
|
||||||
|
Reference in New Issue
Block a user