skip characters after the pseudo-op.
(s_else): Likewise.
* read.c (get_line_sb): Don't look past buffer_limit.
(s_include): In MRI mode, skip characters after the file name.
VERSION, move gen of "conf" here from makefile.
* mpw-make.sed: New file, sed commands to translate Unix makefile
into MPW syntax.
* mpw-make.in: Remove.
* mac-as.r: New file, Mac resource file.
* as.h (inline): Don't decide about defining if __MWERKS__,
remove redundant conditional and definition.
* stabs.c (s_stab_generic): Fix syntax for OBJ_PROCESS_STAB.
Change OBJ_COFF checks to check OBJ_XCOFF instead.
(TARGET_FORMAT): Fully parenthesize.
(LEX_QM): Define if TE_PE.
* config/tc-ppc.c: Replace OBJ_COFF by OBJ_XCOFF throughout.
Remove checks of TE_PE within #ifdef OBJ_XCOFF sections.
(init_regtable): Make i unsigned.
(ppc_set_current_section): Rename from setCurrentSection. Change
all callers.
(ppc_arch): Return after as_fatal to avoid gcc warning.
(md_assemble): Only declare reloc if OBJ_ELF. Add default to
switch on fixups[i].reloc to avoid gcc warning.
(IMAGE_SGN_LNK_OTHER): Fix nested comment.
(ppc_pe_function): Don't call ppc_canonicalize_symbol_name.
(ppc_frob_symbol): Remove TE_PE section checks.
(md_estimate_size_before_relax): Return after abort to avoid gcc
warning.
(md_apply_fix3): Add BFD_RELOC_16_GOT_PCREL to switch.
* read.c (LEX_QM): Define as 0 if not defined.
(lex_type): Use LEX_QM for '?'.
* expr.c (expr): Account for new operatorT values in know
expression.
* write.c (fixup_segment): Clear fixp->fx_subsy if the relocation
is fully resolved.
and rightstop to not be const.
(parse_mri_control_expression): Likewise.
(build_mri_control_operand): Likewise. Use m68k_ip_op to examine
the operand, not m68k_reg_parse.
(s_mri_if): In MRI mode, stop at the first '*'.
(s_mri_while): Likewise.
(s_mri_else): In MRI mode, ignore trailing characters.
(s_mri_endi, s_mri_break, s_mri_next, s_mri_for): Likewise.
(s_mri_endf, s_mri_repeat, s_mri_until, s_mri_endw): Likewise.
* config/m68k-parse.y: Revert yesterday's change.
* config/m68k-parse.h: Revert yesterday's change.
and rightstart to not be const.
(parse_mri_control_expression): Likewise.
(build_mri_control_operand): Likewise. If the left side of the
comparison is a register, and the right side is not, swap the two
sides.
* config/m68k-parse.y (m68k_reg_parse): Make globally visible.
* config/m68k-parse.h (m68k_reg_parse): Declare.
sym-sym case.
* config/obj-coff.c (fixup_segment): Likewise. Permit negative
symbols if TC_M68K.
* config/tc-m68k.c (tc_coff_fix2rtype): If fx_tcbit is set, return
R_RELLONG_NEG.
(tc_gen_reloc): If fx_tcbit is set, abort.
(md_apply_fix_2): For a negative reloc, move fx_subsy to fx_addsy,
and set fx_tcbit.
Permits generating negative relocs for m68k COFF.
(CHECKFLAGS): Remove.
(site.exp): New target.
(check): Rewrite to invoke runtest directly, rather than recurring
down into testsuite.
(clean-here): Remove testsuite directory.
(clean, distclean): Don't recur into testsuite.
* configure.in: Don't call AC_CONFIG_SUBDIRS(testsuite).
* configure: Rebuild.
relaxing, in case md_convert_frag, called by cvt_frag_to_fill,
wants to call fix_new.
* config/tc-m68k.c (m68k_ip): Permit PC relative code if the
segment of the symbol is the current segment, not just in
text_section.
(md_convert_frag_1): Don't call subseg_change.
(md_estimate_size_before_relax): Likewise.
line before preserving a single space. Remove state == 0 test
which will never succeed.
* macro.c (macro_expand_body): Delete local variables from the
formal hash table.
(macro_expand): In MRI mode, stop when whitespace is seen in the
argument list.
* macro.c (ISSEP): Remove duplicated `"' character.
(get_any_string): Copy some characters for which ISSEP is true:
';', '>', '(', ')'. Otherwise we can get in an infinite loop.
* read.c (s_space): In MRI mode, the expressions stop at the first
unquoted space.
(cons_worker): In MRI mode, restore the terminating character at
the end of the function.
at newline characters. In MRI mode, always keep spaces in the
operands field. In MRI mode, treat a line comment character as a
regular comment character following a space.
* cond.c (ignore_input): Use strncasecmp rather than strncmp when
looking for special pseudo-ops.
* read.c (cons_worker): In MRI mode, the expressions stop at the
first unquoted space.
(equals): Likewise.
(md_begin): Use 0/1 instead of TRUE/FALSE.
(md_show_usage): Break up long format string for the benefit
of lame compilers.
* config/tc-m68k.c (md_show_usage): Ditto.
* gasp.c (show_usage): Ditto.
* macro.c (check_macro): Cast result of hash_find.
cast the address to a function pointer, not to an integer.
* write.c (fix_new_internal): Call TC_INIT_FIX_DATA if TC_FIX_TYPE is defined.
Don't initialize fx_bsr. Verify that fx_size field is wide enough to hold
stored value.
* write.h (struct fix): Change tc_fix_data to type TC_FIX_TYPE if that is
defined, otherwise omit it. Delete fx_bsr. Change fx_size to unsigned char.
* config/tc-i960.h (TC_FIX_TYPE, fx_bsr, TC_INIT_FIX_DATA): New macros.
* config/tc-ns32k.h (TC_FIX_TYPE, fx_bsr, TC_INIT_FIX_DATA): New macros.
* config/tc-hppa.h (TC_FIX_TYPE): Define as PTR.
* config/tc-i860.c (md_apply_fix): Delete code for checking fx_im_disp, and for
handling non-zero values, since it never gets set after being initialized to
zero.
* write.h (struct fix): Make fx_im_disp always 2 bits, since the only tc-*
files actually using it need that much.
NS32K changes from Ian Dall:
* configure.in: Treat ns32k-pc532-ux* like ns32k-pc532-mach*, and
ns32k-pc532-lites* like ns32k-pc532-netbsd*.
* config/tc-ns32k.h (LOCAL_LABELS_FB): Define to 1.
present only to stop gas complaining when gcc passes through the
"-mcpu=vr4300" switch.
Fri Sep 1 08:20:19 1995 James G. Smith <jsmith@beauty.cygnus.com>
* config/tc-mips.c (md_parse_option, md_begin, md_show_usage):
Add support for "-mcpu=vr4300" as processor identifier.
* config/tc-m68k.c (m68k_ip) [case POST/PRE/BASE]: Fix typo when
looking at outer displacement. Don't set the postindex bit if the
index suppress bit is set (for memory indirect addressing mode).
(scrub_from_file, scrub_to_file): Remove.
(scrub_string, scrub_last_string): Remove.
(scrub_from_string, scrub_to_string): Remove.
(saved_input, saved_input_len): New static variables.
(struct app_saved): Remove scrub_string, scrub_last_string, and
scrub_file fields. Add saved_input and saved_input_len fields.
(app_push): Adjust saved fields for changes in struct app_save.
Initialize state and saved_input.
(app_pop): Adjust saved fields for changes in struct app_save.
(do_scrub_chars): Rename from do_scrub_next_char and rewrite to
process a buffer at a time rather than a character at a time.
(main, as_warn): Remove obsolete testing code.
* as.h (do_scrub_next_char): Don't declare.
(do_scrub_chars): Declare.
(scrub_from_file, scrub_from_string): Don't declare.
(scrub_to_file, scrub_to_string): Don't declare.
* input-file.c (input_file_get): New static function.
(input_file_give_next_buffer): Call do_scrub_chars rather than
do_scrub_next_char.
* read.c (scrub_string, scrub_string_end): New static variables.
(scrub_from_string): New static function.
(read_a_source_file): Call do_scrub_chars rather than
do_scrub_next_char.
(and comment change in input-scrub.c)
* as.c: Include sb.h and macro.h.
(max_macro_next): New global variable.
(main): Call macro_init.
(macro_expr): New static function.
* as.h (max_macro_nest): Declare.
* read.c (line_label): Rename from mri_line_label. Change all
uses.
(potable): Add exitm, irp, irpc, macro, mexit, rept.
(read_a_source_file): Always clear line_label at the start of a
line, not just when flag_mri or LABELS_WITHOUT_COLONS. Fixup
MRI/LABELS_WITHOUT_COLONS handling. In MRI mode, permit label:
equ val. Set line_label when calling colon. In MRI mode, a
leading '.' does not imply a pseudo-op. Check for macro expansion
before calling md_assemble.
(s_irp): New function.
(get_line_sb): New static function.
(s_macro): New function.
(s_mexit): New function.
(s_rept): New function.
* read.h (line_label): Rename from mri_line_label.
(s_irp, s_rept): Declare.
(s_macro, s_mexit): Declare.
* input-scrub.c: Include sb.h.
(sb_index, from_sb): New static variables.
(macro_nest): New static variable.
(struct input_save): Add sb_index and from_sb fields. Change
next_saved_file field to be struct input_save *.
(next_saved_file): Changed to be struct input_save *.
(input_scrub_push): Change to return type struct input_save *.
Save sb_index and from_sb.
(input_scrub_pop): Change parameter type to struct input_save *.
Restore sb_index and from_sb.
(input_scrub_include_sb): New function.
(input_scrub_next_buffer): Handle reading from from_sb.
(bump_line_counters): Only increment lines if not using from_sb.
* config/tc-m68k.c (opt_table): Add nest.
(opt_nest): New static function.
* gasp.c: Include sb.h and macro.h. Move all sb related functions
and definitions to sb.h and sb.c. Move all macro related
functions and definitions to macro.h and macro.c.
* sb.h, sb.c: New files, extracted from gasp.c.
* macro.h, macro.c: Likewise.
* Makefile.in (OBJS): Add sb.o and macro.o
(GASPOBJS): Define.
(gasp.new): Depend upon $(GASPOBJS). Use $(GASPOBJS) to link.
(TARG_CPU_DEP_m68k): Depend upon subsegs.h.
(gasp.o): Depend upon sb.h and macro.h.
(sb.o): New target.
(macro.o): New target.
(as.o): Depend upon sb.h and macro.h.
(input-scrub.o): Depend upon sb.h.
(read.o): Depend upon sb.h and macro.h.
linecount before printing it.
(process_file): In MRI mode, lines beginning with '*' or '!' are
comments.
(do_reg): In MRI mode, don't require parentheses.
(do_include): In MRI mode, don't requires quotes. If the file can
not be found in the include path, try opening it in the current
directory. Print the file name correctly in the error message.
(chartype_init): In MRI mode, set FIRSTBIT for '.'.
(main): Set comment_char to ';' when entering MRI mode.
(m68k_ip): Pass 64 rather than -1 to add_Fix in 'B' 'B' case.
(md_pcrel_from): If fx_pcrel_adjust is 64, use -1 instead.
You can't portably store negative numbers in a char.
(do_end): Add parameter. In MRI mode, print it out.
(do_irp): New static function.
(sub_actual): Change parameter m to formal_hash, changing type
from macro_entryh * to hash_table *.
(macro_expand_body): New static function, broken out of
macro_expand.
(macro_expand): Call macro_expand_body.
(K_*): Fully parenthesize.
(K_IRP, K_IRPC): Define.
(mrikinfo): Add IRP and IRPC.
(process_pseudo_op): In MRI mode, print out END pseudo-op. Pass
line to do_end. Handle K_IRP and K_IRPC.
"begin_brtab" and "end_brtab" pseudo-ops.
(pa_brtab): New function.
(tc_gen_reloc, SOM version): Handle R_BEGIN_BRTAB and R_END_BRTAB.
(hppa_force_relocation): Force relocations for BRTAB fixups
when OBJ_SOM is defined.
More infrastructure for PA optimziations.
(process_file): Don't warn about missing END in MRI mode.
(do_if): New static function.
(get_mri_string, do_ifc): New static functions.
(buffer_and_nest): Treat MRI mode like alternate syntax mode.
(do_aendr): Change error message in MRI mode.
(do_arepeat): Use REPT/ENDR in MRI mode.
(do_formals): In MRI mode, add special NARG formal.
(macro_expand): Various changes for MRI mode: permit a qualifier
on the macro name; set special NARG formal; permit unnamed
positional arguments; use && to concatenate named parameters;
permit \d to specify an unnamed parameter; permit named parameters
to not start with \; use == to see if a parameter exists.
(getstring): In MRI mode, allow <> to quote a string.
(K_IFEQ, K_IFNE, K_IFLT, K_IFLE, K_IFGE, K_IFGT): Define.
(K_IFC, K_IFNC): Define.
(struct keyword): Name structure used in kinfo array.
(mrikinfo): New static array.
(process_pseudo_op): Don't require leading '.' in MRI mode.
Handle new MRI pseudo-op definitions.
(add_keyword): New static function, broken out of process_init.
(process_init): Use add_keyword. In MRI mode, add mrikinfo table.
(long_options): Add "mri".
(show_usage): Mention -M/--mri.
(main): Call process_init after processing arguments. Handle -M.
* doc/gasp.texi: Document -M/--mri.
iword rather than expr8 and expr16. When recognizing 'M', use
issbyte rather than expr8. When recognizing 'Q' and 't', just
check for O_constant rather than using expr8.
* config/m68k-parse.h (expr8, expr16): Don't define.
* Makefile.in (m68k-parse.o): Depend upon m68k-parse.h, not
m68k-parse.y.
(m68k_quick): New static variable.
(m68k_rel32): New static variable.
(md_pseudo_table): Add opt and reg.
(m68k_ip): Permit absolute symbols in 'l'/'L' recognition. Check
m68k_quick in 'M' and 'Q' recognition. Check m68k_abspcadd in
DISP handling. Check m68k_rel32 in BASE/POST/PRE handling.
(md_begin): In MRI mode, initialize m68k_abspcadd and m68k_rel32.
In MRI mode, change unsized branch aliases to be variable sized.
(struct opt_action): Define.
(opt_table): Define.
(s_opt): New static function.
(skip_to_comma): New static function.
(opt_chip): New static function.
(opt_list): New static function.
(opt_list_symbols): New static function.
(s_reg): New static function.
* as.h (flag_keep_locals): Change from unsigned char to int.
(flag_no_warnings): Likewise.