* doc/as.texinfo: Document irp, irpc, macro, and rept. MRI mode
[deliverable/binutils-gdb.git] / gas / ChangeLog
index 588b479d76f7be9f18a0170a93fcb995880e1ed6..780d2a335100b5bb7da63be07f26054e47a723fc 100644 (file)
@@ -1,3 +1,443 @@
+Mon Aug 21 13:57:20 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * doc/as.texinfo: Document irp, irpc, macro, and rept. MRI mode
+       now supports macros, ifc, ifnc, irp, irpc, rept, and endr, without
+       using gasp.
+
+       Add support for macros.
+       * 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.
+
+       * cond.c (get_mri_string): New static function.
+       (s_ifc): New function.
+       * read.c (potable): Add ifc and ifnc.
+       * read.h (s_ifc): Declare.
+
+       * app.c (do_scrub_begin): In MRI mode, set lex of ' to
+       LEX_IS_STRINGQUOTE.
+
+Mon Aug 21 13:41:33 1995  Michael Meissner  <meissner@cygnus.com>
+
+       * config/tc-ppc.c (md_assemble): Allow @HA, @L, and @H suffixes on
+       constant expressions.
+
+Sun Aug 20 15:54:37 1995  Jim Wilson  <wilson@cygnus.com>
+
+       * config/tc-arm.c (md_reloc_size): Add const to declaration.
+
+Fri Aug 18 10:58:09 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * read.c (s_include): In MRI mode, don't expect quotes around the
+       file name.
+       * listing.c (listing_title): Don't require the title to be quoted.
+
+       * gasp.c (include_print_where_line): Always subtract 1 from
+       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.
+
+       * config/tc-m68k.c: Include subsegs.h.
+       (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.
+
+       * config/tc-sparc.h (tc_fix_adjustable): For OBJ_AOUT case, adjust
+       BFD_RELOC_16 and BFD_RELOC_32 relocs.
+
+Wed Aug 16 14:48:44 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>
+
+       * as.h (alloca): Use void* declaration on HP/UX.
+
+Wed Aug 16 12:49:17 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * config/tc-sparc.c (tc_gen_reloc): If PIC, only change PCREL_S2
+       to WPLT30 for an undefined or external symbol.  Don't consider
+       PC10 or PC22 to be a PC relative reloc when choosing between
+       fx_addnumber and fx_offset.
+
+       * config/tc-z8k.c (md_number_to_chars): Don't do it here, call
+       number_to_chars_bigendian.
+       * config/tc-z8k.h (TARGET_BYTES_BIG_ENDIAN): Define.
+
+       * expr.c (operand): Add support for .startof. and .sizeof. by
+       using magic symbol names which the linker will recognize
+       specially.
+       * doc/as.texinfo: Take out note that .startof. and .sizeof. are
+       not supported.
+
+Tue Aug 15 15:08:49 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * config/tc-m68k.c (md_pseudo_table): Add MRI structured control
+       directives: if, if.b, if.w, if.l, else, else.s, else.l, endi,
+       break, break.s, break.l, next, next.s, next.l, for, for.b, for.w,
+       for.l, endf, repeat, until, until.b, until.w, until.l, while,
+       while.b, while.w, while.l, endw.
+       (enum mri_control_type): Define.
+       (struct mri_control_info): Define.
+       (mri_control_stack): New static variable.
+       (mri_control_index): New static variable.
+       (mri_control_label): New static function.
+       (push_mri_control, pop_mri_control): New static functions.
+       (parse_mri_condition): New static function.
+       (parse_mri_control_operand): New static function.
+       (swap_mri_condition, reverse_mri_condition): New static functions.
+       (build_mri_control_operand): New static function.
+       (parse_mri_control_expression): New static function.
+       (s_mri_if, s_mri_else, s_mri_endi): New static functions.
+       (s_mri_break, s_mri_next): New static functions.
+       (s_mri_for, s_mri_endf): New static functions.
+       (s_mri_repeat, s_mri_until): New static functions.
+       (s_mri_while, s_mri_endw): New static functions.
+       * gasp.c (mrikinfo): Remove IF.
+       * expr.c (get_symbol_end): Accept \001 as part of a name.
+
+       * symbols.c (colon): Change parameter to const char *.
+       * symbols.h (colon): Update declaration.
+
+Mon Aug 14 20:51:56 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>
+
+       * write.c (write_contents): Always do it the BFD_FAST_SECTION_FILL
+       way.  Reformat and reindent that code to GNU standards.
+       (BFD_FAST_SECTION_FILL): Don't define.
+
+Mon Aug 14 14:08:07 1995  Jeff Law  (law@snake.cs.utah.edu)
+
+       * config/tc-hppa.c (md_apply_fix): Don't try to apply BEGIN_BRTAB
+       or END_BRTAB fixups.
+
+Mon Aug 14 15:45:07 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * gasp.c (do_align, get_any_string): Mark as static.
+       (do_assigna, do_assignc, new_file): Likewise.
+
+       * config/tc-m68k.c (s_reg): Rename local op to rop to avoid
+       confusion with macro op.
+
+       * gasp.c (strip_comments): Comment out; it's not used.
+       (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.
+
+       * config/tc-m68k.c (s_opt): Reset *input_line_pointer even if we
+       don't do anything with the option.
+
+Sun Aug 13 17:03:58 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * frags.c (frag_align): Handle absolute_section.
+       * write.c (record_alignment): Likewise.
+
+       * config/tc-mips.c (macro_build): Skip insns with an inappropriate
+       ISA level.
+
+Sun Aug 13 00:35:02 1995  Jeff Law  (law@snake.cs.utah.edu)
+
+       * config/tc-hppa.c (md_pseudo_table): Add entries for
+       "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.
+
+Fri Aug 11 20:34:05 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>
+
+       * Makefile.in (TE_OBJS): Add empty definition.
+
+Fri Aug 11 19:16:08 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * gasp.c (change_base): Don't treat ' specially in MRI mode.
+       (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.
+
+       * gasp.c: Include ansidecl.h.  Make all local functions static.
+        Add prototypes for all static functions.
+       (mri): New global variable.
+       (sb_add_char): Change parameter c from char to int.
+       (sb_add_string): Make parameter s into a const pointer.
+       (sb_add_buffer): Likewise.
+       (checkconst): Change parameter op from char to int.
+       (exp_get_abs): Make parameter emsg into a const pointer.
+       (do_res): Change parameter type from char to int.
+       (buffer_and_nest): Make parameters from and to into const
+       pointers.
+       (do_sdata): Change parameter type from char to int.
+       (new_file): Make parameter name into a const pointer.
+       (do_define): Make parameter string into a const pointer.
+
+       * config/tc-h8300.c (md_number_to_chars): Don't do it here, call
+       number_to_chars_bigendian.
+       * config/tc-h8300.h (TARGET_BYTES_BIG_ENDIAN): Define.
+
+Fri Aug 11 13:23:56 1995  Michael Meissner  <meissner@cygnus.com>
+
+       * write.h (struct fix): Add new field fx_no_overflow.
+
+       * write.c (fixup_segment): If fx_no_overflow is non-zero, don't
+       complain if the addend is too large.
+
+       * config/tc-ppc.c (md_assemble): Set fx_no_overflow if the half
+       word relocations BFD_RELOC_{LO16,HI16,HI16_S}.
+
+Thu Aug 10 20:56:38 1995  Ken Raeburn  <raeburn@cygnus.com>
+
+       * read.c (s_mri_sect) [BFD_ASSEMBLER]: Fix typos in choosing and
+       setting section flags.
+
+Thu Aug 10 00:38:11 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * doc/as.texinfo: Add documentation for MRI compatibility mode.
+       * doc/as.1: Likewise.
+
+       * config/tc-m68k.c (m68k_ip): When recognizing '#', use isbyte and
+       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.
+
+       * read.c (potable): Add spc, ttl, xcom, xref.
+       (s_mri_sect): New function.
+       * read.h (s_mri_sect): Declare.
+       * config/obj-coff.c (obj_coff_section) (both versions): In MRI
+       mode, call s_mri_sect.
+       (obj_pseudo_table): Add sect.s and section.s.  Move sect outside
+       of ifndef BFD_ASSEMBLER.
+       * config/obj-elf.c (elf_pseudo_table): Add section.s, sect,
+       sect.s.
+       (obj_elf_section): In MRI mode, call s_mri_sect.
+       * config/tc-m68k.c (md_pseudo_table): Add restore, save.
+       (struct save_opts): Define.
+       (save_stack): New static variable.
+       (s_save, s_restore): New static functions.
+
+       * read.c (s_set): Remove unused local ptr.
+       (hex_float): Check target_big_endian.
+       (equals): Remove unused local p.
+
+       * config/tc-a29k.h (TARGET_BYTES_BIG_ENDIAN): Define.
+       * config/tc-h8500.h (TARGET_BYTES_BIG_ENDIAN): Define.
+       * config/tc-hppa.h (TARGET_BYTES_BIG_ENDIAN): Define.
+       * config/tc-i860.h (TARGET_BYTES_BIG_ENDIAN): Define.
+       * config/tc-m68k.h (TARGET_BYTES_BIG_ENDIAN): Define.
+       * config/tc-m88k.h (TARGET_BYTES_BIG_ENDIAN): Define.
+       * config/tc-tahoe.h (TARGET_BYTES_BIG_ENDIAN): Define.
+       * config/tc-sh.c (little): Set target_big_endian.
+       (md_begin): Likewise.
+       (md_parse_option): Likewise.
+       (build_relax): Check target_big_endian rather than shl.
+       (build_Mytes, md_atof): Likewise.
+       (md_convert_frag, md_apply_fix): Likewise.
+       (md_number_to_chars): Likewise.
+       
+Wed Aug  9 10:51:48 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * config/tc-m68k.c (m68k_abspcadd): New static variable.
+       (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.
+
+       * read.c (mri_line_label): Make non-static.
+       (potable): Add nopage, page, plen.
+       (s_org): Error if in MRI mode.
+       * read.h (mri_line_label): Declare.
+       * listing.c (listing_nopage): New function.
+       * listing.h (listing_nopage): Declare.
+
+       * symbols.c (symbol_begin): Set sy_frag of abs_symbol to
+       &zero_address_frag.
+
+       * write.c (adjust_reloc_syms): Check that symbol is not NULL
+       before checking sy_mri_common.
+       (fixup_segment): Likewise.
+       * config/obj-coff.c (fixup_segment): Likewise.
+
+       * read.c (abs_section_offset): New global variable.
+       (potable): Add offset, struct.
+       (do_org): New static function; handle changing the origin in the
+       absolute section.
+       (s_org): Use do_org.
+       (s_set): Likewise.
+       (equals): Likewise.
+       (s_space): In absolute_section, just increase abs_section_offset.
+       (s_struct): New function.
+       (emit_expr): Handle absolute_section specially.
+       * read.h (abs_section_offset): Declare.
+       (s_struct): Declare.
+       * frags.c (frag_more): Warn if in absolute_section.
+       (frag_now_fix): In absolute_section, return abs_section_offset.
+       * subsegs.c (subseg_change): If switching to absolute_section,
+       just set now_seg and now_subseg.
+       (subseg_set_rest): Special handling when switching to or from
+       absolute_section.
+
+       * config/tc-m68k.c (m68k_float_copnum): New static variable.
+       (md_pseudo_table): Add fopt and mask2.
+       (m68k_ip): Use m68k_float_copnum, not COPNUM, when setting
+       coprocessor register to use.  In case 'I' when checking operands,
+       correct coprocessor register numbers.  In case 'I' when setting
+       operands, don't add 1.
+       (s_fopt): New static function.
+       * config/m68k-parse.h (COPNUM): Don't define.
+
+       * read.c (potable): Add ifeq, ifge, ifgt, ifle, iflt, ifne.
+       Change if to pass O_ne to s_if.
+       (read_a_source_file): Don't define an label without a colon if
+       ignore_input returns true.
+       * cond.c (s_if): Treat argument as an operatorT describing how to
+       compare the argument against zero.
+       (ignore_input): Don't require an initial dot in MRI mode, or if
+       NO_PSEUDO_DOT is defined.
+
+       * read.c (potable): Add dcb, dcb.b, dcb.d, dcb.l, dcb.s, dcb.w,
+       dcb.x, ds.d, ds.p, ds.s, ds.x, elsec, endc, fail, format, llen,
+       noformat.
+       (read_a_source_file): If pseudo-op handler is s_end, quit
+       immediately.
+       (s_end): New function.
+       (s_fail): New function.
+       (s_float_space): New function.
+       (hex_float): New static function.
+       (float_cons): Use hex_float.
+       * read.h (s_fail): Declare.
+       (s_float_space): Declare.
+       * cond.c (s_end): Remove.
+       * listing.c (listing_psize): Treat argument as indicating whether
+       a height is expected.
+
+       * read.c (mri_pending_align): New static variable.
+       (read_a_source_file): Handle mri_pending_align.
+       (cons): Set mri_pending_align if appropriate.
+
+       * configure.in: Move random special target handling before
+       possible break.
+       * configure: Rebuild.
+
+Tue Aug  8 23:41:25 1995  Alan Modra  <alan@spri.levels.unisa.edu.au>
+
+       * configure.in: Consistently use ${target_cpu_type} rather than
+       ${cpu_type} after the loop.
+       * configure: Rebuild.
+       * Makefile.in (targ-cpu.o): Use @target_cpu_type@ rather than
+       @cpu_type@.
+
+Tue Aug  8 17:27:17 1995  Ken Raeburn  <raeburn@cygnus.com>
+
+       * expr.h (operatorT): Remove comma after last enumerator value.
+
+       * config/obj-vms.c: Some whitespace cleanup from Pat Rankin.
+
+       * as.h (alloca): If __STDC__, declare void* instead of char*.
+
+       Wed Aug  2 18:54:37 1995  Pat Rankin  <rankin@eql.caltech.edu>
+
+       * config/obj-vms.c (Flush_VMS_Object_Record_Buffer,
+       Close_VMS_Object_File): Reorganize the `#if !VMS' cross-assmebler
+       support code.
+       (Close_VMS_Object_File): Call Set_VMS_Object_File_Record to flush
+       output buffer--just in case--before closing the file.
+
 Tue Aug  8 13:07:05 1995  Ian Lance Taylor  <ian@cygnus.com>
 
        * config/tc-m68k.c (archs): Add 68ec000, 68hc000, 68hc001,
@@ -206,7 +646,6 @@ Mon Jul 31 18:19:26 1995  steve chamberlain  <sac@slash.cygnus.com>
        * gasp.c (main): Parse -I option.
        (do_include): Look through include list.
        * gasp.c (change_base): Don't modify numbers in strings. 
-       (pr7583)
 
 Mon Jul 31 12:16:21 1995  Ian Lance Taylor  <ian@cygnus.com>
 
This page took 0.058377 seconds and 4 git commands to generate.