* config/tc-i386.h: Remove BFD_ASSEMBLER tests and all !BFD_ASSEMBLER

code.
	* config/tc-i386.c: Likewise.
	(RELOC_ENUM): Don't define.  Replace throughout with enum.
This commit is contained in:
Alan Modra
2003-08-14 08:05:44 +00:00
parent 55bb4be376
commit f86103b730
3 changed files with 29 additions and 241 deletions

View File

@ -1,5 +1,10 @@
2003-08-14 Alan Modra <amodra@bigpond.net.au> 2003-08-14 Alan Modra <amodra@bigpond.net.au>
* config/tc-i386.h: Remove BFD_ASSEMBLER tests and all !BFD_ASSEMBLER
code.
* config/tc-i386.c: Likewise.
(RELOC_ENUM): Don't define. Replace throughout with enum.
* dep-in.sed: Remove libintl.h. Ignore include/fopen-*.h * dep-in.sed: Remove libintl.h. Ignore include/fopen-*.h
* Makefile.am (POTFILES.in): Unset LC_COLLATE. * Makefile.am (POTFILES.in): Unset LC_COLLATE.
Run "make dep-am". Run "make dep-am".

View File

@ -49,12 +49,6 @@
#define SCALE1_WHEN_NO_INDEX 1 #define SCALE1_WHEN_NO_INDEX 1
#endif #endif
#ifdef BFD_ASSEMBLER
#define RELOC_ENUM enum bfd_reloc_code_real
#else
#define RELOC_ENUM int
#endif
#ifndef DEFAULT_ARCH #ifndef DEFAULT_ARCH
#define DEFAULT_ARCH "i386" #define DEFAULT_ARCH "i386"
#endif #endif
@ -155,7 +149,7 @@ struct _i386_insn
#define Operand_PCrel 1 #define Operand_PCrel 1
/* Relocation type for operand */ /* Relocation type for operand */
RELOC_ENUM reloc[MAX_OPERANDS]; enum bfd_reloc_code_real reloc[MAX_OPERANDS];
/* BASE_REG, INDEX_REG, and LOG2_SCALE_FACTOR are used to encode /* BASE_REG, INDEX_REG, and LOG2_SCALE_FACTOR are used to encode
the base index byte below. */ the base index byte below. */
@ -805,15 +799,8 @@ set_intel_syntax (syntax_flag)
intel_syntax = syntax_flag; intel_syntax = syntax_flag;
if (ask_naked_reg == 0) if (ask_naked_reg == 0)
{
#ifdef BFD_ASSEMBLER
allow_naked_reg = (intel_syntax allow_naked_reg = (intel_syntax
&& (bfd_get_symbol_leading_char (stdoutput) != '\0')); && (bfd_get_symbol_leading_char (stdoutput) != '\0'));
#else
/* Conservative default. */
allow_naked_reg = 0;
#endif
}
else else
allow_naked_reg = (ask_naked_reg < 0); allow_naked_reg = (ask_naked_reg < 0);
} }
@ -868,7 +855,6 @@ set_cpu_arch (dummy)
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
} }
#ifdef BFD_ASSEMBLER
unsigned long unsigned long
i386_mach () i386_mach ()
{ {
@ -879,7 +865,6 @@ i386_mach ()
else else
as_fatal (_("Unknown architecture")); as_fatal (_("Unknown architecture"));
} }
#endif
void void
md_begin () md_begin ()
@ -1172,7 +1157,6 @@ pt (t)
#endif /* DEBUG386 */ #endif /* DEBUG386 */
#ifdef BFD_ASSEMBLER
static bfd_reloc_code_real_type reloc static bfd_reloc_code_real_type reloc
PARAMS ((int, int, int, bfd_reloc_code_real_type)); PARAMS ((int, int, int, bfd_reloc_code_real_type));
@ -1267,34 +1251,6 @@ tc_i386_fix_adjustable (fixP)
#endif #endif
return 1; return 1;
} }
#else
#define reloc(SIZE,PCREL,SIGN,OTHER) 0
#define BFD_RELOC_8 0
#define BFD_RELOC_16 0
#define BFD_RELOC_32 0
#define BFD_RELOC_8_PCREL 0
#define BFD_RELOC_16_PCREL 0
#define BFD_RELOC_32_PCREL 0
#define BFD_RELOC_386_PLT32 0
#define BFD_RELOC_386_GOT32 0
#define BFD_RELOC_386_GOTOFF 0
#define BFD_RELOC_386_TLS_GD 0
#define BFD_RELOC_386_TLS_LDM 0
#define BFD_RELOC_386_TLS_LDO_32 0
#define BFD_RELOC_386_TLS_IE_32 0
#define BFD_RELOC_386_TLS_IE 0
#define BFD_RELOC_386_TLS_GOTIE 0
#define BFD_RELOC_386_TLS_LE_32 0
#define BFD_RELOC_386_TLS_LE 0
#define BFD_RELOC_X86_64_PLT32 0
#define BFD_RELOC_X86_64_GOT32 0
#define BFD_RELOC_X86_64_GOTPCREL 0
#define BFD_RELOC_X86_64_TLSGD 0
#define BFD_RELOC_X86_64_TLSLD 0
#define BFD_RELOC_X86_64_DTPOFF32 0
#define BFD_RELOC_X86_64_GOTTPOFF 0
#define BFD_RELOC_X86_64_TPOFF32 0
#endif
static int intel_float_operand PARAMS ((const char *mnemonic)); static int intel_float_operand PARAMS ((const char *mnemonic));
@ -1819,7 +1775,7 @@ swap_operands ()
{ {
union i386_op temp_op; union i386_op temp_op;
unsigned int temp_type; unsigned int temp_type;
RELOC_ENUM temp_reloc; enum bfd_reloc_code_real temp_reloc;
int xchg1 = 0; int xchg1 = 0;
int xchg2 = 0; int xchg2 = 0;
@ -3293,7 +3249,7 @@ output_disp (insn_start_frag, insn_start_off)
} }
else else
{ {
RELOC_ENUM reloc_type; enum bfd_reloc_code_real reloc_type;
int size = 4; int size = 4;
int sign = 0; int sign = 0;
int pcrel = (i.flags[n] & Operand_PCrel) != 0; int pcrel = (i.flags[n] & Operand_PCrel) != 0;
@ -3337,7 +3293,6 @@ output_disp (insn_start_frag, insn_start_off)
p = frag_more (size); p = frag_more (size);
reloc_type = reloc (size, pcrel, sign, i.reloc[n]); reloc_type = reloc (size, pcrel, sign, i.reloc[n]);
#ifdef BFD_ASSEMBLER
if (reloc_type == BFD_RELOC_32 if (reloc_type == BFD_RELOC_32
&& GOT_symbol && GOT_symbol
&& GOT_symbol == i.op[n].disps->X_add_symbol && GOT_symbol == i.op[n].disps->X_add_symbol
@ -3368,7 +3323,6 @@ output_disp (insn_start_frag, insn_start_off)
reloc_type = BFD_RELOC_386_GOTPC; reloc_type = BFD_RELOC_386_GOTPC;
i.op[n].disps->X_add_number += add; i.op[n].disps->X_add_number += add;
} }
#endif
fix_new_exp (frag_now, p - frag_now->fr_literal, size, fix_new_exp (frag_now, p - frag_now->fr_literal, size,
i.op[n].disps, pcrel, reloc_type); i.op[n].disps, pcrel, reloc_type);
} }
@ -3413,7 +3367,7 @@ output_imm (insn_start_frag, insn_start_off)
Need a 32-bit fixup (don't support 8bit Need a 32-bit fixup (don't support 8bit
non-absolute imms). Try to support other non-absolute imms). Try to support other
sizes ... */ sizes ... */
RELOC_ENUM reloc_type; enum bfd_reloc_code_real reloc_type;
int size = 4; int size = 4;
int sign = 0; int sign = 0;
@ -3431,7 +3385,7 @@ output_imm (insn_start_frag, insn_start_off)
p = frag_more (size); p = frag_more (size);
reloc_type = reloc (size, 0, sign, i.reloc[n]); reloc_type = reloc (size, 0, sign, i.reloc[n]);
#ifdef BFD_ASSEMBLER
/* This is tough to explain. We end up with this one if we /* This is tough to explain. We end up with this one if we
* have operands that look like * have operands that look like
* "_GLOBAL_OFFSET_TABLE_+[.-.L284]". The goal here is to * "_GLOBAL_OFFSET_TABLE_+[.-.L284]". The goal here is to
@ -3504,7 +3458,6 @@ output_imm (insn_start_frag, insn_start_off)
reloc_type = BFD_RELOC_386_GOTPC; reloc_type = BFD_RELOC_386_GOTPC;
i.op[n].imms->X_add_number += add; i.op[n].imms->X_add_number += add;
} }
#endif
fix_new_exp (frag_now, p - frag_now->fr_literal, size, fix_new_exp (frag_now, p - frag_now->fr_literal, size,
i.op[n].imms, 0, reloc_type); i.op[n].imms, 0, reloc_type);
} }
@ -3513,7 +3466,7 @@ output_imm (insn_start_frag, insn_start_off)
} }
#ifndef LEX_AT #ifndef LEX_AT
static char *lex_got PARAMS ((RELOC_ENUM *, int *)); static char *lex_got PARAMS ((enum bfd_reloc_code_real *, int *));
/* Parse operands of the form /* Parse operands of the form
<symbol>@GOTOFF+<nnn> <symbol>@GOTOFF+<nnn>
@ -3526,13 +3479,13 @@ static char *lex_got PARAMS ((RELOC_ENUM *, int *));
input line. Otherwise return NULL. */ input line. Otherwise return NULL. */
static char * static char *
lex_got (reloc, adjust) lex_got (reloc, adjust)
RELOC_ENUM *reloc; enum bfd_reloc_code_real *reloc;
int *adjust; int *adjust;
{ {
static const char * const mode_name[NUM_FLAG_CODE] = { "32", "16", "64" }; static const char * const mode_name[NUM_FLAG_CODE] = { "32", "16", "64" };
static const struct { static const struct {
const char *str; const char *str;
const RELOC_ENUM rel[NUM_FLAG_CODE]; const enum bfd_reloc_code_real rel[NUM_FLAG_CODE];
} gotrel[] = { } gotrel[] = {
{ "PLT", { BFD_RELOC_386_PLT32, 0, BFD_RELOC_X86_64_PLT32 } }, { "PLT", { BFD_RELOC_386_PLT32, 0, BFD_RELOC_X86_64_PLT32 } },
{ "GOTOFF", { BFD_RELOC_386_GOTOFF, 0, 0 } }, { "GOTOFF", { BFD_RELOC_386_GOTOFF, 0, 0 } },
@ -3610,7 +3563,7 @@ lex_got (reloc, adjust)
/* x86_cons_fix_new is called via the expression parsing code when a /* x86_cons_fix_new is called via the expression parsing code when a
reloc is needed. We use this hook to get the correct .got reloc. */ reloc is needed. We use this hook to get the correct .got reloc. */
static RELOC_ENUM got_reloc = NO_RELOC; static enum bfd_reloc_code_real got_reloc = NO_RELOC;
void void
x86_cons_fix_new (frag, off, len, exp) x86_cons_fix_new (frag, off, len, exp)
@ -3619,7 +3572,7 @@ x86_cons_fix_new (frag, off, len, exp)
unsigned int len; unsigned int len;
expressionS *exp; expressionS *exp;
{ {
RELOC_ENUM r = reloc (len, 0, 0, got_reloc); enum bfd_reloc_code_real r = reloc (len, 0, 0, got_reloc);
got_reloc = NO_RELOC; got_reloc = NO_RELOC;
fix_new_exp (frag, off, len, exp, 0, r); fix_new_exp (frag, off, len, exp, 0, r);
} }
@ -3725,25 +3678,15 @@ i386_immediate (imm_start)
exp->X_add_number = (exp->X_add_number ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31); exp->X_add_number = (exp->X_add_number ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31);
} }
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
else if (1 else if (OUTPUT_FLAVOR == bfd_target_aout_flavour
#ifdef BFD_ASSEMBLER
&& OUTPUT_FLAVOR == bfd_target_aout_flavour
#endif
&& exp_seg != absolute_section && exp_seg != absolute_section
&& exp_seg != text_section && exp_seg != text_section
&& exp_seg != data_section && exp_seg != data_section
&& exp_seg != bss_section && exp_seg != bss_section
&& exp_seg != undefined_section && exp_seg != undefined_section
#ifdef BFD_ASSEMBLER && !bfd_is_com_section (exp_seg))
&& !bfd_is_com_section (exp_seg)
#endif
)
{ {
#ifdef BFD_ASSEMBLER
as_bad (_("unimplemented segment %s in operand"), exp_seg->name); as_bad (_("unimplemented segment %s in operand"), exp_seg->name);
#else
as_bad (_("unimplemented segment type %d in operand"), exp_seg);
#endif
return 0; return 0;
} }
#endif #endif
@ -3900,7 +3843,6 @@ i386_displacement (disp_start, disp_end)
free (gotfree_input_line); free (gotfree_input_line);
#endif #endif
#ifdef BFD_ASSEMBLER
/* We do this to make sure that the section symbol is in /* We do this to make sure that the section symbol is in
the symbol table. We will ultimately change the relocation the symbol table. We will ultimately change the relocation
to be relative to the beginning of the section. */ to be relative to the beginning of the section. */
@ -3926,7 +3868,6 @@ i386_displacement (disp_start, disp_end)
else else
i.reloc[this_operand] = BFD_RELOC_32; i.reloc[this_operand] = BFD_RELOC_32;
} }
#endif
if (exp->X_op == O_absent || exp->X_op == O_big) if (exp->X_op == O_absent || exp->X_op == O_big)
{ {
@ -3941,24 +3882,15 @@ i386_displacement (disp_start, disp_end)
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
if (exp->X_op != O_constant if (exp->X_op != O_constant
#ifdef BFD_ASSEMBLER
&& OUTPUT_FLAVOR == bfd_target_aout_flavour && OUTPUT_FLAVOR == bfd_target_aout_flavour
#endif
&& exp_seg != absolute_section && exp_seg != absolute_section
&& exp_seg != text_section && exp_seg != text_section
&& exp_seg != data_section && exp_seg != data_section
&& exp_seg != bss_section && exp_seg != bss_section
&& exp_seg != undefined_section && exp_seg != undefined_section
#ifdef BFD_ASSEMBLER && !bfd_is_com_section (exp_seg))
&& !bfd_is_com_section (exp_seg)
#endif
)
{ {
#ifdef BFD_ASSEMBLER
as_bad (_("unimplemented segment %s in operand"), exp_seg->name); as_bad (_("unimplemented segment %s in operand"), exp_seg->name);
#else
as_bad (_("unimplemented segment type %d in operand"), exp_seg);
#endif
return 0; return 0;
} }
#endif #endif
@ -4387,7 +4319,7 @@ md_estimate_size_before_relax (fragP, segment)
/* Symbol is undefined in this segment, or we need to keep a /* Symbol is undefined in this segment, or we need to keep a
reloc so that weak symbols can be overridden. */ reloc so that weak symbols can be overridden. */
int size = (fragP->fr_subtype & CODE16) ? 2 : 4; int size = (fragP->fr_subtype & CODE16) ? 2 : 4;
RELOC_ENUM reloc_type; enum bfd_reloc_code_real reloc_type;
unsigned char *opcode; unsigned char *opcode;
int old_fr_fix; int old_fr_fix;
@ -4486,19 +4418,11 @@ md_estimate_size_before_relax (fragP, segment)
Out: Any fixSs and constants are set up. Out: Any fixSs and constants are set up.
Caller will turn frag into a ".space 0". */ Caller will turn frag into a ".space 0". */
#ifndef BFD_ASSEMBLER
void
md_convert_frag (headers, sec, fragP)
object_headers *headers ATTRIBUTE_UNUSED;
segT sec ATTRIBUTE_UNUSED;
fragS *fragP;
#else
void void
md_convert_frag (abfd, sec, fragP) md_convert_frag (abfd, sec, fragP)
bfd *abfd ATTRIBUTE_UNUSED; bfd *abfd ATTRIBUTE_UNUSED;
segT sec ATTRIBUTE_UNUSED; segT sec ATTRIBUTE_UNUSED;
fragS *fragP; fragS *fragP;
#endif
{ {
unsigned char *opcode; unsigned char *opcode;
unsigned char *where_to_put_displacement = NULL; unsigned char *where_to_put_displacement = NULL;
@ -4637,7 +4561,7 @@ md_apply_fix3 (fixP, valP, seg)
char *p = fixP->fx_where + fixP->fx_frag->fr_literal; char *p = fixP->fx_where + fixP->fx_frag->fr_literal;
valueT value = *valP; valueT value = *valP;
#if defined (BFD_ASSEMBLER) && !defined (TE_Mach) #if !defined (TE_Mach)
if (fixP->fx_pcrel) if (fixP->fx_pcrel)
{ {
switch (fixP->fx_r_type) switch (fixP->fx_r_type)
@ -4748,12 +4672,11 @@ md_apply_fix3 (fixP, valP, seg)
} }
#endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) */ #endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) */
*valP = value; *valP = value;
#endif /* defined (BFD_ASSEMBLER) && !defined (TE_Mach) */ #endif /* !defined (TE_Mach) */
/* Are we finished with this relocation now? */ /* Are we finished with this relocation now? */
if (fixP->fx_addsy == NULL) if (fixP->fx_addsy == NULL)
fixP->fx_done = 1; fixP->fx_done = 1;
#ifdef BFD_ASSEMBLER
else if (use_rela_relocations) else if (use_rela_relocations)
{ {
fixP->fx_no_overflow = 1; fixP->fx_no_overflow = 1;
@ -4761,7 +4684,7 @@ md_apply_fix3 (fixP, valP, seg)
fixP->fx_addnumber = value; fixP->fx_addnumber = value;
value = 0; value = 0;
} }
#endif
md_number_to_chars (p, value, fixP->fx_size); md_number_to_chars (p, value, fixP->fx_size);
} }
@ -5005,7 +4928,6 @@ md_show_usage (stream)
#endif #endif
} }
#ifdef BFD_ASSEMBLER
#if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \ #if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \
|| defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) || defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))
@ -5087,7 +5009,6 @@ void i386_elf_emit_arch_note ()
} }
} }
#endif #endif
#endif /* BFD_ASSEMBLER */
symbolS * symbolS *
md_undefined_symbol (name) md_undefined_symbol (name)
@ -5117,7 +5038,6 @@ md_section_align (segment, size)
segT segment ATTRIBUTE_UNUSED; segT segment ATTRIBUTE_UNUSED;
valueT size; valueT size;
{ {
#ifdef BFD_ASSEMBLER
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
if (OUTPUT_FLAVOR == bfd_target_aout_flavour) if (OUTPUT_FLAVOR == bfd_target_aout_flavour)
{ {
@ -5131,7 +5051,6 @@ md_section_align (segment, size)
align = bfd_get_section_alignment (stdoutput, segment); align = bfd_get_section_alignment (stdoutput, segment);
size = ((size + (1 << align) - 1) & ((valueT) -1 << align)); size = ((size + (1 << align) - 1) & ((valueT) -1 << align));
} }
#endif
#endif #endif
return size; return size;
@ -5163,8 +5082,6 @@ s_bss (ignore)
#endif #endif
#ifdef BFD_ASSEMBLER
void void
i386_validate_fix (fixp) i386_validate_fix (fixp)
fixS *fixp; fixS *fixp;
@ -5324,73 +5241,6 @@ tc_gen_reloc (section, fixp)
return rel; return rel;
} }
#else /* !BFD_ASSEMBLER */
#if (defined(OBJ_AOUT) | defined(OBJ_BOUT))
void
tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
char *where;
fixS *fixP;
relax_addressT segment_address_in_file;
{
/* In: length of relocation (or of address) in chars: 1, 2 or 4.
Out: GNU LD relocation length code: 0, 1, or 2. */
static const unsigned char nbytes_r_length[] = { 42, 0, 1, 42, 2 };
long r_symbolnum;
know (fixP->fx_addsy != NULL);
md_number_to_chars (where,
(valueT) (fixP->fx_frag->fr_address
+ fixP->fx_where - segment_address_in_file),
4);
r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy)
? S_GET_TYPE (fixP->fx_addsy)
: fixP->fx_addsy->sy_number);
where[6] = (r_symbolnum >> 16) & 0x0ff;
where[5] = (r_symbolnum >> 8) & 0x0ff;
where[4] = r_symbolnum & 0x0ff;
where[7] = ((((!S_IS_DEFINED (fixP->fx_addsy)) << 3) & 0x08)
| ((nbytes_r_length[fixP->fx_size] << 1) & 0x06)
| (((fixP->fx_pcrel << 0) & 0x01) & 0x0f));
}
#endif /* OBJ_AOUT or OBJ_BOUT. */
#if defined (I386COFF)
short
tc_coff_fix2rtype (fixP)
fixS *fixP;
{
if (fixP->fx_r_type == R_IMAGEBASE)
return R_IMAGEBASE;
return (fixP->fx_pcrel ?
(fixP->fx_size == 1 ? R_PCRBYTE :
fixP->fx_size == 2 ? R_PCRWORD :
R_PCRLONG) :
(fixP->fx_size == 1 ? R_RELBYTE :
fixP->fx_size == 2 ? R_RELWORD :
R_DIR32));
}
int
tc_coff_sizemachdep (frag)
fragS *frag;
{
if (frag->fr_next)
return (frag->fr_next->fr_address - frag->fr_address);
else
return 0;
}
#endif /* I386COFF */
#endif /* !BFD_ASSEMBLER */
/* Parse operands using Intel syntax. This implements a recursive descent /* Parse operands using Intel syntax. This implements a recursive descent
parser based on the BNF grammar published in Appendix B of the MASM 6.1 parser based on the BNF grammar published in Appendix B of the MASM 6.1

View File

@ -23,6 +23,10 @@
#ifndef TC_I386 #ifndef TC_I386
#define TC_I386 1 #define TC_I386 1
#ifndef BFD_ASSEMBLER
#error So, do you know what you are doing?
#endif
#ifdef ANSI_PROTOTYPES #ifdef ANSI_PROTOTYPES
struct fix; struct fix;
#endif #endif
@ -33,7 +37,6 @@ struct fix;
#define TARGET_FORMAT "coff-i386-lynx" #define TARGET_FORMAT "coff-i386-lynx"
#endif #endif
#ifdef BFD_ASSEMBLER
#define TARGET_ARCH bfd_arch_i386 #define TARGET_ARCH bfd_arch_i386
#define TARGET_MACH (i386_mach ()) #define TARGET_MACH (i386_mach ())
extern unsigned long i386_mach PARAMS ((void)); extern unsigned long i386_mach PARAMS ((void));
@ -87,59 +90,6 @@ extern void i386_elf_emit_arch_note PARAMS ((void));
#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 0 #define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 0
#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_r_type==7)
#define TC_COFF_FIX2RTYPE(FIX) tc_coff_fix2rtype(FIX)
extern short tc_coff_fix2rtype PARAMS ((struct fix *));
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
extern int tc_coff_sizemachdep PARAMS ((fragS *frag));
#ifdef TE_GO32
/* DJGPP now expects some sections to be 2**4 aligned. */
#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \
((strcmp (obj_segment_name (SEG), ".text") == 0 \
|| strcmp (obj_segment_name (SEG), ".data") == 0 \
|| strcmp (obj_segment_name (SEG), ".bss") == 0 \
|| strncmp (obj_segment_name (SEG), ".gnu.linkonce.t", 15) == 0 \
|| strncmp (obj_segment_name (SEG), ".gnu.linkonce.d", 15) == 0 \
|| strncmp (obj_segment_name (SEG), ".gnu.linkonce.r", 15) == 0) \
? 4 \
: 2)
#else
#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 2
#endif
#ifdef TE_386BSD
/* The BSDI linker apparently rejects objects with a machine type of
M_386 (100). */
#define AOUT_MACHTYPE 0
#else
#define AOUT_MACHTYPE 100
#endif
#ifndef OBJ_AOUT
#ifndef TE_PE
#ifndef TE_GO32
/* Local labels starts with .L */
#define LOCAL_LABEL(name) (name[0] == '.' \
&& (name[1] == 'L' || name[1] == 'X' || name[1] == '.'))
#endif
#endif
#endif
#define tc_aout_pre_write_hook(x) {;} /* not used */
#define tc_crawl_symbol_chain(a) {;} /* not used */
#define tc_headers_hook(a) {;} /* not used */
#define tc_coff_symbol_emit_hook(a) {;} /* not used */
#endif /* ! BFD_ASSEMBLER */
#define LOCAL_LABELS_FB 1 #define LOCAL_LABELS_FB 1
extern const char extra_symbol_chars[]; extern const char extra_symbol_chars[];
@ -459,7 +409,6 @@ extern void x86_cons_fix_new
#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */ #define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
#ifdef BFD_ASSEMBLER
#define NO_RELOC BFD_RELOC_NONE #define NO_RELOC BFD_RELOC_NONE
void i386_validate_fix PARAMS ((struct fix *)); void i386_validate_fix PARAMS ((struct fix *));
@ -496,22 +445,6 @@ extern int tc_i386_fix_adjustable PARAMS ((struct fix *));
|| (FIX)->fx_r_type == BFD_RELOC_386_GOTPC \ || (FIX)->fx_r_type == BFD_RELOC_386_GOTPC \
|| TC_FORCE_RELOCATION (FIX)) || TC_FORCE_RELOCATION (FIX))
#else /* ! BFD_ASSEMBLER */
#define NO_RELOC 0
#define TC_RVA_RELOC 7
/* Need this for PIC relocations */
#define NEED_FX_R_TYPE
#undef REVERSE_SORT_RELOCS
/* For COFF. */
#define TC_FORCE_RELOCATION(FIX) \
((FIX)->fx_r_type == 7 || generic_force_reloc (FIX))
#endif /* ! BFD_ASSEMBLER */
#define md_operand(x) #define md_operand(x)
extern const struct relax_type md_relax_table[]; extern const struct relax_type md_relax_table[];