From f17c130bd8665a588e814387e43b8fe35e3d2fad Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 17 Feb 2005 13:46:05 +0000 Subject: [PATCH] * tc.h (struct relax_type, relax_typeS): Move from here.. * as.h: ..to here. Make rlx_forward and rlx_backward an offsetT. * ecoff.c (ecoff_new_file): Add appfile param. * ecoff.h (ecoff_new_file): Likewise. * itbl-lex.h: New file. * itbl-lex.l: Include itbl-lex.h. * itbl-parse.y: Likewise. (insntbl_line, yyparse, yylex): Move to itbl-lex.h. * read.c (s_app_file_string): Mark appfile possibly unused. * subsegs.c (seg_not_empty_p): Make sec possibly unused. * subsegs.h (struct seg_info_trash): Delete. (seg_info): Use segment_info_type instead. * config/obj-coff.c (struct filename_list): Make filename const char *. * config/obj-ecoff.h (obj_app_file): Pass app to ecoff_new_file. * config/obj-elf.c (elf_file_symbol): Similarly. * config/tc-a29k.c (md_apply_fix3): Make val a valueT. Don't use signed right shift. * config/tc-arc.c (md_operand): Warning fix. * config/tc-arm.c (arm_parse_reloc): Only define when OBJ_ELF. (md_begin): Rearrange #if defined OBJ_COFF || defined OBJ_ELF. * config/tc-cris.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Use do while. * config/tc-frv.c (frv_force_relocation): Warning fix. * config/tc-m68k.c (md_parse_option): Delete unused var. * config/tc-mcore.c (mylog2): Rename from log2 throughout. * config/tc-sparc.c: Likewise. (s_common): Warning fix. * config/tc-mips.c (append_insn): Use unsigned long long expressions. * config/tc-mmix.c (PUSHJSTUB_MAX, PUSHJSTUB_MIN): Define from addressT. * config/tc-s390.c (s390_insn): Delete test of unsigned >= 0. * config/tc-sh.c (sh_cfi_frame_initial_instructions, sh_regname_to_dw2regnum): Only define for OBJ_ELF. * config/tc-tic4x.c (tic4x_insert_reg): Use ISLOWER. (tic4x_do_align): Use TIC_NOP_OPCODE. * config/tc-tic4x.h (TIC_NOP_OPCODE): Rename from NOP_OPCODE. * config/tc-vax.c: Include netinet/in.h. (tc_headers_hook): Formatting. * config/tc-xstormy16.c (md_pcrel_from_section): Correct parens. --- gas/ChangeLog | 41 +++++++++++++++++++++ gas/as.h | 18 +++++++++- gas/config/obj-coff.c | 4 +-- gas/config/obj-ecoff.h | 4 +-- gas/config/obj-elf.c | 4 +-- gas/config/tc-a29k.c | 11 +++--- gas/config/tc-arc.c | 90 ++++++++++++++++++++++++----------------------- gas/config/tc-arm.c | 13 +++---- gas/config/tc-cris.h | 5 +-- gas/config/tc-frv.c | 4 +-- gas/config/tc-m68k.c | 3 +- gas/config/tc-mcore.c | 11 +++--- gas/config/tc-mips.c | 18 +++++----- gas/config/tc-mmix.c | 21 +++-------- gas/config/tc-s390.c | 6 ++-- gas/config/tc-sh.c | 2 +- gas/config/tc-sparc.c | 14 ++++---- gas/config/tc-tic4x.c | 6 ++-- gas/config/tc-tic4x.h | 4 +-- gas/config/tc-vax.c | 9 +++-- gas/config/tc-xstormy16.c | 10 +++--- gas/ecoff.c | 5 +-- gas/ecoff.h | 4 +-- gas/itbl-lex.h | 23 ++++++++++++ gas/itbl-lex.l | 3 +- gas/itbl-parse.y | 6 ++-- gas/read.c | 2 +- gas/subsegs.c | 4 +-- gas/subsegs.h | 11 ++---- gas/tc.h | 22 ++---------- 30 files changed, 212 insertions(+), 166 deletions(-) create mode 100644 gas/itbl-lex.h diff --git a/gas/ChangeLog b/gas/ChangeLog index 7dbcef3..699c9a6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,44 @@ +2005-02-17 Alan Modra + + * tc.h (struct relax_type, relax_typeS): Move from here.. + * as.h: ..to here. Make rlx_forward and rlx_backward an offsetT. + * ecoff.c (ecoff_new_file): Add appfile param. + * ecoff.h (ecoff_new_file): Likewise. + * itbl-lex.h: New file. + * itbl-lex.l: Include itbl-lex.h. + * itbl-parse.y: Likewise. + (insntbl_line, yyparse, yylex): Move to itbl-lex.h. + * read.c (s_app_file_string): Mark appfile possibly unused. + * subsegs.c (seg_not_empty_p): Make sec possibly unused. + * subsegs.h (struct seg_info_trash): Delete. + (seg_info): Use segment_info_type instead. + * config/obj-coff.c (struct filename_list): Make filename const char *. + * config/obj-ecoff.h (obj_app_file): Pass app to ecoff_new_file. + * config/obj-elf.c (elf_file_symbol): Similarly. + * config/tc-a29k.c (md_apply_fix3): Make val a valueT. Don't use + signed right shift. + * config/tc-arc.c (md_operand): Warning fix. + * config/tc-arm.c (arm_parse_reloc): Only define when OBJ_ELF. + (md_begin): Rearrange #if defined OBJ_COFF || defined OBJ_ELF. + * config/tc-cris.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Use do while. + * config/tc-frv.c (frv_force_relocation): Warning fix. + * config/tc-m68k.c (md_parse_option): Delete unused var. + * config/tc-mcore.c (mylog2): Rename from log2 throughout. + * config/tc-sparc.c: Likewise. + (s_common): Warning fix. + * config/tc-mips.c (append_insn): Use unsigned long long expressions. + * config/tc-mmix.c (PUSHJSTUB_MAX, PUSHJSTUB_MIN): Define from + addressT. + * config/tc-s390.c (s390_insn): Delete test of unsigned >= 0. + * config/tc-sh.c (sh_cfi_frame_initial_instructions, + sh_regname_to_dw2regnum): Only define for OBJ_ELF. + * config/tc-tic4x.c (tic4x_insert_reg): Use ISLOWER. + (tic4x_do_align): Use TIC_NOP_OPCODE. + * config/tc-tic4x.h (TIC_NOP_OPCODE): Rename from NOP_OPCODE. + * config/tc-vax.c: Include netinet/in.h. + (tc_headers_hook): Formatting. + * config/tc-xstormy16.c (md_pcrel_from_section): Correct parens. + 2005-02-17 Jan Beulich * config/tc-ia64.c (ia64_parse_name): Don't advance 'name' when diff --git a/gas/as.h b/gas/as.h index 354f183..a232a4b 100644 --- a/gas/as.h +++ b/gas/as.h @@ -1,6 +1,6 @@ /* as.h - global header file Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003 + 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -380,6 +380,22 @@ typedef unsigned int relax_substateT; /* Enough bits for address, but still an integer type. Could be a problem, cross-assembling for 64-bit machines. */ typedef addressT relax_addressT; + +struct relax_type +{ + /* Forward reach. Signed number. > 0. */ + offsetT rlx_forward; + /* Backward reach. Signed number. < 0. */ + offsetT rlx_backward; + + /* Bytes length of this address. */ + unsigned char rlx_length; + + /* Next longer relax-state. 0 means there is no 'next' relax-state. */ + relax_substateT rlx_more; +}; + +typedef struct relax_type relax_typeS; /* main program "as.c" (command arguments etc). */ diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index bb97280..69b53ff 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -1,6 +1,6 @@ /* coff object file format Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004 + 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS. @@ -1859,7 +1859,7 @@ int function_lineoff = -1; /* Offset in line#s where the last function into the string table. */ struct filename_list { - char *filename; + const char *filename; struct filename_list *next; }; diff --git a/gas/config/obj-ecoff.h b/gas/config/obj-ecoff.h index 9dbb4e5..9f14d3b 100644 --- a/gas/config/obj-ecoff.h +++ b/gas/config/obj-ecoff.h @@ -1,5 +1,5 @@ /* ECOFF object file format header file. - Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2002 + Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2002, 2004, 2005 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Ian Lance Taylor . @@ -63,7 +63,7 @@ extern void ecoff_frob_file PARAMS ((void)); #define obj_symbol_new_hook ecoff_symbol_new_hook /* Record file switches in the ECOFF symbol table. */ -#define obj_app_file(name, app) ecoff_new_file (name) +#define obj_app_file(name, app) ecoff_new_file (name, app) /* At the moment we don't want to do any stabs processing in read.c. */ #define OBJ_PROCESS_STAB(seg, what, string, type, other, desc) \ diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index c25dbbc..c7907b3 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -1,6 +1,6 @@ /* ELF object file format Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -260,7 +260,7 @@ elf_file_symbol (const char *s, int appfile) } #ifdef NEED_ECOFF_DEBUG - ecoff_new_file (s); + ecoff_new_file (s, appfile); #endif } diff --git a/gas/config/tc-a29k.c b/gas/config/tc-a29k.c index 2350fcb..9e3fb44 100644 --- a/gas/config/tc-a29k.c +++ b/gas/config/tc-a29k.c @@ -1,5 +1,6 @@ /* tc-a29k.c -- Assemble for the AMD 29000. - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 2000, 2001, 2002 + Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 2000, 2001, + 2002, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -787,10 +788,10 @@ md_number_to_chars (buf, val, n) void md_apply_fix3 (fixP, valP, seg) fixS *fixP; - valueT * valP; + valueT *valP; segT seg ATTRIBUTE_UNUSED; { - long val = *valP; + valueT val = *valP; char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; fixP->fx_addnumber = val; /* Remember value for emit_reloc. */ @@ -864,9 +865,7 @@ md_apply_fix3 (fixP, valP, seg) } else if (fixP->fx_pcrel) { - long v = val >> 17; - - if (v != 0 && v != -1) + if (val + 0x20000 > 0x3ffff) as_bad_where (fixP->fx_file, fixP->fx_line, "call/jmp target out of range"); } diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c index 6409171..445ea48 100644 --- a/gas/config/tc-arc.c +++ b/gas/config/tc-arc.c @@ -1,5 +1,5 @@ /* tc-arc.c -- Assembler for the ARC - Copyright 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003, 2004 + Copyright 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Doug Evans (dje@cygnus.com). @@ -1645,50 +1645,52 @@ md_operand (expressionP) { char *p = input_line_pointer; - if (*p == '%') - if (strncmp (p, "%st(", 4) == 0) - { - input_line_pointer += 4; - expression (expressionP); - if (*input_line_pointer != ')') - { - as_bad ("missing ')' in %%-op"); - return; - } - ++input_line_pointer; - arc_code_symbol (expressionP); - } - else - { - /* It could be a register. */ - int i, l; - struct arc_ext_operand_value *ext_oper = arc_ext_operands; - p++; + if (*p != '%') + return; - while (ext_oper) - { - l = strlen (ext_oper->operand.name); - if (!strncmp (p, ext_oper->operand.name, l) && !ISALNUM (*(p + l))) - { - input_line_pointer += l + 1; - expressionP->X_op = O_register; - expressionP->X_add_number = (int) &ext_oper->operand; - return; - } - ext_oper = ext_oper->next; - } - for (i = 0; i < arc_reg_names_count; i++) - { - l = strlen (arc_reg_names[i].name); - if (!strncmp (p, arc_reg_names[i].name, l) && !ISALNUM (*(p + l))) - { - input_line_pointer += l + 1; - expressionP->X_op = O_register; - expressionP->X_add_number = (int) &arc_reg_names[i]; - break; - } - } - } + if (strncmp (p, "%st(", 4) == 0) + { + input_line_pointer += 4; + expression (expressionP); + if (*input_line_pointer != ')') + { + as_bad ("missing ')' in %%-op"); + return; + } + ++input_line_pointer; + arc_code_symbol (expressionP); + } + else + { + /* It could be a register. */ + int i, l; + struct arc_ext_operand_value *ext_oper = arc_ext_operands; + p++; + + while (ext_oper) + { + l = strlen (ext_oper->operand.name); + if (!strncmp (p, ext_oper->operand.name, l) && !ISALNUM (*(p + l))) + { + input_line_pointer += l + 1; + expressionP->X_op = O_register; + expressionP->X_add_number = (int) &ext_oper->operand; + return; + } + ext_oper = ext_oper->next; + } + for (i = 0; i < arc_reg_names_count; i++) + { + l = strlen (arc_reg_names[i].name); + if (!strncmp (p, arc_reg_names[i].name, l) && !ISALNUM (*(p + l))) + { + input_line_pointer += l + 1; + expressionP->X_op = O_register; + expressionP->X_add_number = (int) &arc_reg_names[i]; + break; + } + } + } } /* We have no need to default values of symbols. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index c40df52..7a7c41e 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -1,6 +1,6 @@ /* tc-arm.c -- Assemble for the ARM - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, + 2004, 2005 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) Modified by David Taylor (dtaylor@armltd.co.uk) @@ -4551,6 +4551,7 @@ do_t_bkpt (char * str) end_of_line (str); } +#ifdef OBJ_ELF static bfd_reloc_code_real_type arm_parse_reloc (void) { @@ -4591,6 +4592,7 @@ arm_parse_reloc (void) return reloc_map[i].reloc; } +#endif /* ARM V5 branch-link-exchange (argument parse) for BLX(1) only. Expects inst.instruction is set for BLX(1). @@ -11028,6 +11030,7 @@ md_begin (void) cpu_variant = mcpu_cpu_opt | mfpu_opt; +#if defined OBJ_COFF || defined OBJ_ELF { unsigned int flags = 0; @@ -11038,7 +11041,6 @@ md_begin (void) { case EF_ARM_EABI_UNKNOWN: #endif -#if defined OBJ_COFF || defined OBJ_ELF /* Set the flags in the private structure. */ if (uses_apcs_26) flags |= F_APCS26; if (support_interwork) flags |= F_INTERWORK; @@ -11064,7 +11066,7 @@ md_begin (void) /* Using VFP conventions (even if soft-float). */ if (cpu_variant & FPU_VFP_EXT_NONE) flags |= F_VFP_FLOAT; -#endif + #if defined OBJ_ELF if (cpu_variant & FPU_ARCH_MAVERICK) flags |= EF_ARM_MAVERICK_FLOAT; @@ -11078,7 +11080,6 @@ md_begin (void) abort (); } #endif -#if defined OBJ_COFF || defined OBJ_ELF bfd_set_private_flags (stdoutput, flags); /* We have run out flags in the COFF header to encode the @@ -11098,8 +11099,8 @@ md_begin (void) bfd_set_section_contents (stdoutput, sec, NULL, 0, 0); } } -#endif } +#endif /* Record the CPU type as well. */ switch (cpu_variant & ARM_CPU_MASK) diff --git a/gas/config/tc-cris.h b/gas/config/tc-cris.h index 2f969c6..bb7a6ac 100644 --- a/gas/config/tc-cris.h +++ b/gas/config/tc-cris.h @@ -1,5 +1,6 @@ /* tc-cris.h -- Header file for tc-cris.c, the CRIS GAS port. - Copyright 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. Contributed by Axis Communications AB, Lund, Sweden. Originally written for GAS 1.38.1 by Mikael Asker. @@ -152,7 +153,7 @@ extern void tc_cris_check_adjusted_broken_word PARAMS ((offsetT, tc_cris_check_adjusted_broken_word ((offsetT) (new_offset), brokw) /* We don't want any implicit alignment, so we do nothing. */ -#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) +#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) do { } while (0) /* CRIS instructions, with operands and prefixes included, are a multiple of two bytes long. */ diff --git a/gas/config/tc-frv.c b/gas/config/tc-frv.c index c75018d..c737dcd 100644 --- a/gas/config/tc-frv.c +++ b/gas/config/tc-frv.c @@ -1,5 +1,5 @@ /* tc-frv.c -- Assembler for the Fujitsu FRV. - Copyright 2002, 2003 Free Software Foundation. + Copyright 2002, 2003, 2004, 2005 Free Software Foundation. This file is part of GAS, the GNU Assembler. @@ -1423,7 +1423,7 @@ frv_force_relocation (fix) fixS * fix; { switch (fix->fx_r_type < BFD_RELOC_UNUSED - ? fix->fx_r_type + ? (int) fix->fx_r_type : fix->fx_cgen.opinfo) { case BFD_RELOC_FRV_GPREL12: diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c index f0a87b3..bdd4cae 100644 --- a/gas/config/tc-m68k.c +++ b/gas/config/tc-m68k.c @@ -1,6 +1,6 @@ /* tc-m68k.c -- Assemble for the m68k family Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -7092,7 +7092,6 @@ md_parse_option (int c, char *arg) { int i; unsigned long arch; - const char *oarg = arg; arg += 3; if (*arg == 'm') diff --git a/gas/config/tc-mcore.c b/gas/config/tc-mcore.c index c10b75d..02f2139 100644 --- a/gas/config/tc-mcore.c +++ b/gas/config/tc-mcore.c @@ -1,5 +1,6 @@ /* tc-mcore.c -- Assemble code for M*Core - Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2003, 2005 + Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -42,7 +43,7 @@ static void mcore_cons PARAMS ((int)); static void mcore_float_cons PARAMS ((int)); static void mcore_stringer PARAMS ((int)); static void mcore_fill PARAMS ((int)); -static int log2 PARAMS ((unsigned int)); +static int mylog2 PARAMS ((unsigned int)); static char * parse_reg PARAMS ((char *, unsigned *)); static char * parse_creg PARAMS ((char *, unsigned *)); static char * parse_exp PARAMS ((char *, expressionS *)); @@ -412,7 +413,7 @@ md_begin () /* Get a log2(val). */ static int -log2 (val) +mylog2 (val) unsigned int val; { int log = -1; @@ -1146,7 +1147,7 @@ md_assemble (str) op_end = parse_imm (op_end + 1, & reg, 1, 1 << 31); /* Further restrict the immediate to a power of two. */ if ((reg & (reg - 1)) == 0) - reg = log2 (reg); + reg = mylog2 (reg); else { reg = 0; @@ -1203,7 +1204,7 @@ md_assemble (str) /* Further restrict the immediate to a power of two. */ if ((reg & (reg - 1)) == 0) - reg = log2 (reg); + reg = mylog2 (reg); else { reg = 0; diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 17a6dbd..0e246dd 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -1,6 +1,6 @@ /* tc-mips.c -- assemble code for a MIPS chip. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004 Free Software Foundation, Inc. + 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by the OSF and Ralph Campbell. Written by Keith Knowles and Ralph Campbell, working independently. Modified for ECOFF and R4000 support by Ian Lance Taylor of Cygnus @@ -2093,7 +2093,7 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, { if (address_expr->X_op == O_constant) { - valueT tmp; + unsigned int tmp; switch (*reloc_type) { @@ -2102,20 +2102,18 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, break; case BFD_RELOC_MIPS_HIGHEST: - tmp = (address_expr->X_add_number - + ((valueT) 0x8000 << 32) + 0x80008000) >> 16; - tmp >>= 16; - ip->insn_opcode |= (tmp >> 16) & 0xffff; + tmp = (address_expr->X_add_number + 0x800080008000ull) >> 48; + ip->insn_opcode |= tmp & 0xffff; break; case BFD_RELOC_MIPS_HIGHER: - tmp = (address_expr->X_add_number + 0x80008000) >> 16; - ip->insn_opcode |= (tmp >> 16) & 0xffff; + tmp = (address_expr->X_add_number + 0x80008000ull) >> 32; + ip->insn_opcode |= tmp & 0xffff; break; case BFD_RELOC_HI16_S: - ip->insn_opcode |= ((address_expr->X_add_number + 0x8000) - >> 16) & 0xffff; + tmp = (address_expr->X_add_number + 0x8000) >> 16; + ip->insn_opcode |= tmp & 0xffff; break; case BFD_RELOC_HI16: diff --git a/gas/config/tc-mmix.c b/gas/config/tc-mmix.c index acd9321..600f021 100644 --- a/gas/config/tc-mmix.c +++ b/gas/config/tc-mmix.c @@ -1,5 +1,5 @@ /* tc-mmix.c -- Assembler for Don Knuth's MMIX. - Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation. + Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation. This file is part of GAS, the GNU Assembler. @@ -301,22 +301,9 @@ struct obstack mmix_sym_obstack; #define PUSHJ_4B GETA_3B /* We'll very rarely have sections longer than LONG_MAX, but we'll make a - feeble attempt at getting 64-bit C99 or gcc-specific values (assuming - long long is 64 bits on the host). */ -#ifdef LLONG_MIN -#define PUSHJSTUB_MIN LLONG_MIN -#elif defined (LONG_LONG_MIN) -#define PUSHJSTUB_MIN LONG_LONG_MIN -#else -#define PUSHJSTUB_MIN LONG_MIN -#endif -#ifdef LLONG_MAX -#define PUSHJSTUB_MAX LLONG_MAX -#elif defined (LONG_LONG_MAX) -#define PUSHJSTUB_MAX LONG_LONG_MAX -#else -#define PUSHJSTUB_MAX LONG_MAX -#endif + feeble attempt at getting 64-bit values. */ +#define PUSHJSTUB_MAX ((offsetT) (((addressT) -1) >> 1)) +#define PUSHJSTUB_MIN (-PUSHJSTUB_MAX - 1) #define JMP_0F (65536 * 256 * 4 - 8) #define JMP_0B (-65536 * 256 * 4 - 4) diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c index 8bb9697..13ced8b 100644 --- a/gas/config/tc-s390.c +++ b/gas/config/tc-s390.c @@ -1,5 +1,6 @@ /* tc-s390.c -- Assemble for the S390 - Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of GAS, the GNU Assembler. @@ -1596,13 +1597,10 @@ s390_insn (ignore) if (exp.X_op == O_constant) { if ( ( opformat->oplen == 6 - && (addressT) exp.X_add_number >= 0 && (addressT) exp.X_add_number < (1ULL << 48)) || ( opformat->oplen == 4 - && (addressT) exp.X_add_number >= 0 && (addressT) exp.X_add_number < (1ULL << 32)) || ( opformat->oplen == 2 - && (addressT) exp.X_add_number >= 0 && (addressT) exp.X_add_number < (1ULL << 16))) md_number_to_chars (insn, exp.X_add_number, opformat->oplen); else diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index d5e9267..2628ff7 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -4556,7 +4556,6 @@ sh_parse_name (char const *name, expressionS *exprP, char *nextcharP) return 1; } -#endif void sh_cfi_frame_initial_instructions (void) @@ -4606,4 +4605,5 @@ sh_regname_to_dw2regnum (const char *regname) } return regnum; } +#endif /* OBJ_ELF */ #endif /* BFD_ASSEMBLER */ diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c index da10db2..49f218a 100644 --- a/gas/config/tc-sparc.c +++ b/gas/config/tc-sparc.c @@ -1,6 +1,6 @@ /* tc-sparc.c -- Assemble for the SPARC Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004 + 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -133,7 +133,7 @@ int sparc_cie_data_alignment; /* Handle of the OPCODE hash table. */ static struct hash_control *op_hash; -static int log2 PARAMS ((int)); +static int mylog2 PARAMS ((int)); static void s_data1 PARAMS ((void)); static void s_seg PARAMS ((int)); static void s_proc PARAMS ((int)); @@ -3637,7 +3637,7 @@ md_pcrel_from (fixP) of two. */ static int -log2 (value) +mylog2 (value) int value; { int shift; @@ -3739,7 +3739,7 @@ s_reserve (ignore) if (align != 0) { - temp = log2 (align); + temp = mylog2 (align); if (temp < 0) { as_bad (_("alignment not a power of 2")); @@ -3877,7 +3877,7 @@ s_common (ignore) if (temp > max_alignment) { temp = max_alignment; - as_warn (_("alignment too large; assuming %d"), temp); + as_warn (_("alignment too large; assuming %ld"), (long) temp); } #endif @@ -3902,7 +3902,7 @@ s_common (ignore) if (temp == 0) align = 0; else - align = log2 (temp); + align = mylog2 (temp); if (align < 0) { @@ -4225,7 +4225,7 @@ sparc_cons_align (nbytes) if (sparc_no_align_cons) return; - nalign = log2 (nbytes); + nalign = mylog2 (nbytes); if (nalign == 0) return; diff --git a/gas/config/tc-tic4x.c b/gas/config/tc-tic4x.c index f0308da..77f2ec6 100644 --- a/gas/config/tc-tic4x.c +++ b/gas/config/tc-tic4x.c @@ -1,5 +1,5 @@ /* tc-tic4x.c -- Assemble for the Texas Instruments TMS320C[34]x. - Copyright (C) 1997,1998, 2002, 2003 Free Software Foundation. + Copyright (C) 1997,1998, 2002, 2003, 2005 Free Software Foundation. Contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz) @@ -708,7 +708,7 @@ tic4x_insert_reg (regname, regnum) symbol_table_insert (symbol_new (regname, reg_section, (valueT) regnum, &zero_address_frag)); for (i = 0; regname[i]; i++) - buf[i] = islower (regname[i]) ? TOUPPER (regname[i]) : regname[i]; + buf[i] = ISLOWER (regname[i]) ? TOUPPER (regname[i]) : regname[i]; buf[i] = '\0'; symbol_table_insert (symbol_new (buf, reg_section, (valueT) regnum, @@ -3090,7 +3090,7 @@ tic4x_do_align (alignment, fill, len, max) int len ATTRIBUTE_UNUSED; int max ATTRIBUTE_UNUSED; { - unsigned long nop = NOP_OPCODE; + unsigned long nop = TIC_NOP_OPCODE; /* Because we are talking lwords, not bytes, adjust alignment to do words */ alignment += 2; diff --git a/gas/config/tc-tic4x.h b/gas/config/tc-tic4x.h index 0d6c72c..eb7fcec 100644 --- a/gas/config/tc-tic4x.h +++ b/gas/config/tc-tic4x.h @@ -1,5 +1,5 @@ /* tc-tic4x.h -- Assemble for the Texas TMS320C[34]X. - Copyright (C) 1997, 2002, 2003 Free Software Foundation. + Copyright (C) 1997, 2002, 2003, 2005 Free Software Foundation. Contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz) @@ -65,7 +65,7 @@ #define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag) #define NEED_FX_R_TYPE -#define NOP_OPCODE 0x0c800000 +#define TIC_NOP_OPCODE 0x0c800000 #define reloc_type int diff --git a/gas/config/tc-vax.c b/gas/config/tc-vax.c index ea7d1d6..4cf9e15 100644 --- a/gas/config/tc-vax.c +++ b/gas/config/tc-vax.c @@ -1,5 +1,6 @@ /* tc-vax.c - vax-specific - - Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1998, 2000, 2001, 2002, 2003 + Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1998, 2000, 2001, 2002, + 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -29,6 +30,10 @@ #include "elf/vax.h" #endif +#if defined (OBJ_AOUT) && !defined (BFD_ASSEMBLER) && defined (TE_NetBSD) +#include +#endif + /* These chars start a comment anywhere in a source file (except inside another comment */ const char comment_chars[] = "#"; @@ -3407,7 +3412,7 @@ tc_headers_hook(headers) { #ifdef TE_NetBSD N_SET_INFO(headers->header, OMAGIC, M_VAX4K_NETBSD, 0); - headers->header.a_info = htonl(headers->header.a_info); + headers->header.a_info = htonl (headers->header.a_info); #endif } #endif /* !BFD_ASSEMBLER */ diff --git a/gas/config/tc-xstormy16.c b/gas/config/tc-xstormy16.c index f00a866..7928634 100644 --- a/gas/config/tc-xstormy16.c +++ b/gas/config/tc-xstormy16.c @@ -1,5 +1,5 @@ /* tc-xstormy16.c -- Assembler for the Sanyo XSTORMY16. - Copyright 2000, 2001, 2002, 2003 Free Software Foundation. + Copyright 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation. This file is part of GAS, the GNU Assembler. @@ -344,10 +344,10 @@ md_pcrel_from_section (fixP, sec) fixS * fixP; segT sec; { - if (fixP->fx_addsy != (symbolS *) NULL - && (! S_IS_DEFINED (fixP->fx_addsy) - || S_GET_SEGMENT (fixP->fx_addsy) != sec) - || xstormy16_force_relocation (fixP)) + if ((fixP->fx_addsy != (symbolS *) NULL + && (! S_IS_DEFINED (fixP->fx_addsy) + || S_GET_SEGMENT (fixP->fx_addsy) != sec)) + || xstormy16_force_relocation (fixP)) /* The symbol is undefined, or it is defined but not in this section, or the relocation will be relative to this symbol not the section symbol. diff --git a/gas/ecoff.c b/gas/ecoff.c index 1103be2..534d8b6 100644 --- a/gas/ecoff.c +++ b/gas/ecoff.c @@ -1,5 +1,6 @@ /* ECOFF debugging support. - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, + 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Cygnus Support. This file was put together by Ian Lance Taylor . A @@ -2312,7 +2313,7 @@ add_file (const char *file_name, int indx ATTRIBUTE_UNUSED, int fake) compiler output, only in hand coded assembler. */ void -ecoff_new_file (const char *name) +ecoff_new_file (const char *name, int appfile ATTRIBUTE_UNUSED) { if (cur_file_ptr != NULL && strcmp (cur_file_ptr->name, name) == 0) return; diff --git a/gas/ecoff.h b/gas/ecoff.h index 2f09afc..e2880d2 100644 --- a/gas/ecoff.h +++ b/gas/ecoff.h @@ -1,5 +1,5 @@ /* ecoff.h -- header file for ECOFF debugging support - Copyright 1993, 1994, 1995, 1996, 1997, 1998 + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 2003, 2005 Free Software Foundation, Inc. Contributed by Cygnus Support. Put together by Ian Lance Taylor . @@ -38,7 +38,7 @@ extern void ecoff_read_begin_hook (void); /* This function should be called when the assembler switches to a new file. */ -extern void ecoff_new_file (const char *); +extern void ecoff_new_file (const char *, int); /* This function should be called when a new symbol is created, by obj_symbol_new_hook. */ diff --git a/gas/itbl-lex.h b/gas/itbl-lex.h new file mode 100644 index 0000000..e51104e --- /dev/null +++ b/gas/itbl-lex.h @@ -0,0 +1,23 @@ +/* itbl-lex.h + Copyright 2005 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 + 02111-1307, USA. */ + +extern int insntbl_line; +extern int yyparse (void); +extern int yylex (void); diff --git a/gas/itbl-lex.l b/gas/itbl-lex.l index e924efc..c02bfeb 100644 --- a/gas/itbl-lex.l +++ b/gas/itbl-lex.l @@ -1,5 +1,5 @@ /* itbl-lex.l - Copyright 1997, 1998, 2001 Free Software Foundation, Inc. + Copyright 1997, 1998, 2001, 2002, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -23,6 +23,7 @@ #include #include +#include "itbl-lex.h" #include #ifdef DEBUG diff --git a/gas/itbl-parse.y b/gas/itbl-parse.y index 53552d7..54d7204 100644 --- a/gas/itbl-parse.y +++ b/gas/itbl-parse.y @@ -1,5 +1,5 @@ /* itbl-parse.y - Copyright 1997 Free Software Foundation, Inc. + Copyright 1997, 2002, 2003, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -247,6 +247,7 @@ FIXME! hex is ambiguous with any digit */ #include +#include "itbl-lex.h" #include "itbl-ops.h" /* #define DEBUG */ @@ -273,9 +274,6 @@ FIXME! hex is ambiguous with any digit static int sbit, ebit; static struct itbl_entry *insn=0; -extern int insntbl_line; -int yyparse PARAMS ((void)); -int yylex PARAMS ((void)); static int yyerror PARAMS ((const char *)); %} diff --git a/gas/read.c b/gas/read.c index 131937e..3365c82 100644 --- a/gas/read.c +++ b/gas/read.c @@ -1599,7 +1599,7 @@ s_data (int ignore ATTRIBUTE_UNUSED) .file. */ void -s_app_file_string (char *file, int appfile) +s_app_file_string (char *file, int appfile ATTRIBUTE_UNUSED) { #ifdef LISTING if (listing) diff --git a/gas/subsegs.c b/gas/subsegs.c index 828fa4a..88a4ba0 100644 --- a/gas/subsegs.c +++ b/gas/subsegs.c @@ -1,6 +1,6 @@ /* subsegs.c - subsegments - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2002, 2004 + 1999, 2000, 2002, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -602,7 +602,7 @@ subseg_text_p (segT sec) seg_definitely_not_empty_p. */ int -seg_not_empty_p (segT sec) +seg_not_empty_p (segT sec ATTRIBUTE_UNUSED) { segment_info_type *seginfo = seg_info (sec); frchainS *chain; diff --git a/gas/subsegs.h b/gas/subsegs.h index 331c557..ec57731 100644 --- a/gas/subsegs.h +++ b/gas/subsegs.h @@ -1,5 +1,5 @@ /* subsegs.h -> subsegs.c - Copyright 1987, 1992, 1993, 1994, 1995, 1996, 1998, 2000 + Copyright 1987, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2003, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -139,14 +139,7 @@ extern segment_info_type segment_info[]; extern frchainS *data0_frchainP; extern frchainS *bss0_frchainP; -/* Dummy so stuff can compile. Should never be used. */ -struct seg_info_trash { - struct { - unsigned stab_string_size : 1; - } stabu; - unsigned hadone : 1; -}; -#define seg_info(S) (abort (), (struct seg_info_trash *) 0) +#define seg_info(S) (abort (), (segment_info_type *) 0) #endif diff --git a/gas/tc.h b/gas/tc.h index 6a06626..a33657c 100644 --- a/gas/tc.h +++ b/gas/tc.h @@ -1,6 +1,7 @@ /* tc.h - target cpu dependent - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2003, 2004 + Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2003, + 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -24,25 +25,6 @@ extern const pseudo_typeS md_pseudo_table[]; -/* JF moved this here from as.h under the theory that nobody except MACHINE.c - and write.c care about it anyway. */ - -struct relax_type -{ - /* Forward reach. Signed number. > 0. */ - long rlx_forward; - /* Backward reach. Signed number. < 0. */ - long rlx_backward; - - /* Bytes length of this address. */ - unsigned char rlx_length; - - /* Next longer relax-state. 0 means there is no 'next' relax-state. */ - relax_substateT rlx_more; -}; - -typedef struct relax_type relax_typeS; - extern const int md_reloc_size; /* Size of a relocation record. */ char * md_atof (int, char *, int *); -- 2.7.4