* as.c (perform_an_assemly_pass): Don't set output_section here.
* expr.c (expr_part, expr): Turn off section assertions for ECOFF,
since it has additional sections.
* read.c (s_lcomm): For MIPS ECOFF, put small objects in .sbss,
not bss_section.
* config/obj-ecoff.h (TARGET_SYMBOL_FIELDS): Added
ecoff_undefined field.
* config/obj-ecoff.c (obj_symbol_new_hook): Initialize
ecoff_undefined field.
(add_file): If using stabs, just output a stabs symbol rather than
creating a new fdr.
(obj_ecoff_begin, obj_ecoff_bend): Ignore line number by reading
it with get_absolute_expression, rather than skipping it by hand.
(obj_ecoff_loc): If using stabs, just output a stabs symbol rather
than ECOFF line number information.
(obj_ecoff_stab): Accept non-zero values for stabs line number.
(ecoff_build_symbols): Set ifilesym correctly. Set storage class
to small, undefined and/or readonly sections if appropriate.
Don't output symbol names containing \001 characters.
(ecoff_frob_file): Make sure at least one fdr is output.
* config/tc-mips.h: Define TC_MIPS.
* config/tc-mips.c (g_switch_value): New static variable.
(md_assemble): Set gp size of output BFD.
(gp_reference): New function; returns 1 if expression can be
accesssed via gp. Always returns 0 if not using ECOFF.
(macro_build): Convert BFD_RELOC_LO16 to BFD_RELOC_MIPS_GPREL if
possible.
(macro): Generate sequences using gp if possible.
(md_parse_option): Ignore -EL and -EB. Parse -G.
(md_apply_fix): Added BFD_RELOC_MIPS_GPREL to ignored case.
(s_change_sec): Handle .rdata and .sdata for ECOFF.
(s_extern): Mark symbol as external. Set ecoff_undefined field.
wasn't being stored into scnhdr.
* config/obj-coffbfd.h: Add prototype of s_get_segment.
* read.c (TC_START_LABEL): Default definition.
(read_a_source_file): Use TC_START_LABEL macro to work out
if a label has been seen.
dropping a space immediately following an identifier.
* expr.c, write.c: Rewrote assert expressions to not use multiple
lines; I don't think that can be done portably.
* config/tc-mips.c (macro): Use $AT if target register is zero in
load instruction, which it can be for a floating point load.
Also a bunch more changes to config/obj-ecoff.c, still in flux.
the section contents.
* config/obj-ecoff.h, config/obj-ecoff.c: Numerous changes to get
symbol table and values right.
* config/tc-mips.h (LOCAL_LABEL): If OBJ_ECOFF, any label starting
with $L is local.
* config/tc-mips.c (tc_gen_reloc): If OBJ_ECOFF, adjust the addend
by the section vma.
* config/z8k.mt (TARG_CPU_DEPENDENTS): The relevant file is
z8k-opc.h, not z8k.h.
* config/obj-ecoff.c, config/obj-ecoff.h: Preliminary ECOFF
support.
* config/tc-mips.h (TARGET_FORMAT): Define based on OBJ_AOUT vs.
OBJ_ECOFF as well as TARGET_BYTES_*_ENDIAN.
(struct loc, struct proc, struct file): Moved to tc-mips.c within
#ifndef OBJ_ECOFF block, since ECOFF uses different versions.
* config/tc-mips.c: Rearranged for ECOFF support. Added
prototypes for all static functions. Moved existing minimal
debugging format support info #ifndef OBJ_ECOFF blocks.
(macro_build_lui): Eliminated sign_extend argument, because ECOFF
does not support a non sign extended high 16 bits reloc. Adjusted
all callers accordingly.
(tc_get_register): Renamed from get_register, and made non-static.
* config/mips-big.mt, config/mips-lit.mt: New files. Define
TARGET_BYTES_BIG_ENDIAN and TARGET_BYTES_LITTLE_ENDIAN,
respectively.
* configure.in (mips-*-bsd*): Use gas_target mips-lit.
(mips-*-ultrix*, mips-*-irix*, mips-*-ecoff): New targets, using
obj_format ecoff and gas_target mips-lit or mips-big.
Misc optimizations, a couple of bugfixes.
Merged doc/ChangeLog.
Ralph Campbell's MIPS support.
And any other changes I've been putting in, save whitespace/comment adjustments.
* config/obj-coffbfd.c (fill_section): Don't set vaddr here.
(write_object_file): Set it here instead, so that fixup_segment
can see the correct value.
as soon as I check in as.h.
(s_lcomm): Likewise with bss_section.
(s_fill): Use memset, not bzero.
whitespace/comment changes.
deleted some "#ifdef DONTDEF" sections relating to GDB symtabs.
* app.c, config/tc-*.c: Don't include read.h, since it is already
included by as.h.
* These are based on patches from Minh Tran-le
<mtranle@paris.intellicorp.com>.
* configure.in (i[34]86-ibm-aix*): Accept i486 for host. Use
obj_format coffbfd and gas_target i386coff for target.
(i[34]86-*-isc*): New host (uses sysv).
* config/i386aix.mt: Removed (no longer used).
* config/mh-i386aix (RANLIB): Use true rather than /bin/true.
(MINUS_G): Removed.
(LDFLAGS): Added, defined as -shlib.
* config/te-i386aix.h (REVERSE_SORT_RELOCS): Undefine.
* config/te-sco386.h (LOCAL_LABEL): Don't define.
(DOT_LABEL_PREFIX): Define.
* expr.c (operand): If DOT_LABEL_PREFIX, use .L0\001 as a label
name rather than L0\001.
* read.c (s_lcomm): Make a frag in SEG_BSS rather than using
local_bss_counter.
* symbols.c, symbols.h (local_bss_counter): Removed.
* write.c (write_object_file): bss no longer uses
local_bss_counter. Pass correct data and bss size to
VMS_write_object_file.
* config/obj-vms.c (VMS_write_object_file): Accept bss size as
argument, rather than using local_bss_counter.
* config/tc-m88k.c (s_bss): Don't use local_bss_counter.
* config/tc-sparc.c (s_reserve): Don't use local_bss_counter.
* config/obj-coffbfd.c (had_lineno, had_reloc): Removed.
(size_section): Restored sanity check.
(do_relocs_for): Base section address on s_paddr rather than
computing it. Adjust a29k R_IHIHALF special case to account for
section paddr (used to require paddr to be zero). If there are no
reclos, set s_relptr to 0. Set relocation size in object_headers.
(fill_section): Always set s_vaddr here, removing
ZERO_BASED_SEGMENTS case. Force s_scnptr for bss to 0. Don't set
NOLOAD for i386 .bss, because it confuses the SVR3 native linker.
Set STYP_INFO for .comment.
(coff_header_append): Use object headers and H_{SET,GET}_* macros.
Make aouthdr writing depend on OBJ_COFF_OMIT_OPTIONAL_HEADER.
(crawl_symbols): Handle 8 character section name correctly. Use
H_{SET,GET}_* macros.
(do_linenos_for): Set lineno size in object_headers.
(write_object_file): Use H_{SET,GET}_* macros. Don't bother to
set s_vaddr here. If string_byte_count remains 4, set it back to
0, and only write strings out if there are some. Call
fill_section before do_relocs_for and do_linenos_for.
(obj_coff_section): Handle optional quoted second argument giving
section characteristics.
(obj_coff_bss): Added to handle .bss.
(obj_coff_ident): Added to handle .ident (puts string in .comment
section).
(obj_coff_lcomm): Put common symbols in .bss, not .data.
(fixup_mdeps): Change to segment. Call frag_wane after
md_convert_frag.
(fixup_segment): Explicitly check S_IS_COMMON before making 386
adjustment (already happened only for common symbols, but this is
clearer).
* config/obj-coffbfd.h (OBJ_COFF_OMIT_OPTIONAL_HEADER): Define.
* config/tc-i386.c (s_bss): Don't use if I386COFF.
(md_pseudo_table): Ignore .optim and .noopt.
(tc_coff_sizemachdep): New function.
* config/tc-i386.h (REVERSE_SORT_RELOCS): Undef, for SVR3
compatibility.
(LOCAL_LABEL): Removed definition.
(DOT_LABEL_PREFIX): Defined.
* listing.c: Call xmalloc, not malloc; don't declare malloc.
* Changes to support SCO 3.2v4:
* read.c (s_align_bytes, s_align_ptwo): If not SEG_DATA or
SEG_BSS, fill with NOP_OPCODE.
* config/i386coff.mt: Add opcode/i386.h to TARG_CPU_DEPENDENTS.
* config/obj-coffbfd.c (do_relocs_for): Increment addr even if not
using ZERO_BASED_SEGMENTS.
(fill_section): If ZERO_BASED_SEGMENTS, set segment addresses, but
never set segment address for SEG_E2 (.bss) and don't write out
SEG_E2 contents. Set .init and .fini sections to STYP_TEXT.
(obj_coff_endef): Don't merge labels or symbols awaiting forward
definitions, and don't merge tags with non-tags. Check for .bf
rather than just checking whether the second character is b and
the third character is f.
(obj_coff_val): gcc can generate values which we don't handle
correctly; discard information for now, since it only affects the
debugging information.
(tag_find_or_name): Don't insert tags in the symbol table.
(yank_symbols): Don't merge labels.
(write_object_file): Don't define SUB_SEGMENT_ALIGN if it is
already defined. Fill subsegments with NOP_OPCODE, not 0. Don't
set segment address if ZERO_BASED_SEGMENTS.
(obj_coff_section): Accept and ignore a trailing quoted string, as
used in AT&T i386 syntax.
(fixup_segment): Take segment as argument. On the i386, adjust PC
relative addends by the segment vaddr.
* tc-i386.h: Define SUB_SEGMENT_ALIGN.
* tc-a29k.h: Define ZERO_BASED_SEGMENTS.
* tc-i386.c: (i386_operand): If I386COFF, accept any segment type.
Deleted some unused code.
Fixed some declarations to use PARAMS macro.
Fixed up configure.in for new targets.
Some whitespace/comment fixes.
Merged config/ChangeLog.
Removed some unneeded files.
obj-coff.c (obj_coff_endef): Use as_warn, not fprintf.
tc-m68k.c (md_assemble): 68000+68881 is okay -- could be emulating.
p3 into devo.
* tc-m68k.c (m68k_reg_parse): If REGISTER_PREFIX isn't defined,
still accept (but don't require) OPTIONAL_REGISTER_PREFIX before
the register name.
* tc-m68k.h (OPTIONAL_REGISTER_PREFIX): Define to be "%", if not
M68KCOFF.
support when using /opt/SUNWspro/SC2.0/acc.
Tue Nov 10 09:50:25 1992 Ian Lance Taylor (ian@cygnus.com)
* obj-coffbfd.c (fill_section): set STYP_NOLOAD bit for .bss
section.
* atof-ieee.c, atof-ns32k.c, tc-*.c: made EXP_CHARS, FLT_CHARS,
comment_chars, line_comment_chars and line_seperator_chars
consistently const, and always initialized them. Included read.h.
* Support for i386-sysv.
obj-coffbfd.c (do_relocs_for, write_object_file): set segment
addresses to reasonable sizes. New define ZERO_BASED_SEGMENTS can
be used to set them all to zero as was done before.
(fill_section): segment addresses now set in write_object_file.
(fill_section): Don't set STYP_NOLOAD for .bss section.
(fixup_segment): 386 uses strange common symbol format.
tc-i386.c (tc_coff_fix2rtype): use R_DIR32, not R_RELLONG, for
compatibility with SVR3.2 linker.
* obj-coff.c (c_dot_file_symbol, obj_coff_ln, obj_coff_line):
support for C source listings. (obj_coff_endef): look in the right
part of the symbol for the symbol name
* tc-i960.h, tc-i960.c: avoid the ANSI preprocessor addition
#elif, since it is not supported by old compilers.
ho-rs6000.h, tc-m68k.c: the native RS/6000 compiler miscompiles a
couple of expressions in tc-m68k.c.
* tc-m68k.h: if M68KCOFF, define DOT_LABEL_PREFIX (to require
local labels to start with a .) and set REGISTER_PREFIX to %.
tc-m68k.c (m68k_reg_parse): accept REGISTER_PREFIX if defined.
* obj-coffbfd.c (do_relocs_for,fill_section): now allocate all
sections starting from zero, rather than making them consecutive.
This makes subsequent reloc calculations easier, esp if the
object format doesn't understand addends. (obj_coff_lcomm): (maybe
temporarily) allocate lcomm in .data rather than in .bss. It
seems that some tools can't cope with a non-zero sized bss
before linkage.
* Added WARN_SIGNED_OVERFLOW_WORD define to give an error if any
.word is < -32768 or > 32767. The -J flag causes the error to be
ignored. This is to catch over-sized switches generated by gcc on
systems which don't support the broken .word hack.
as.c (main): permit -J if WARN_SIGNED_OVERFLOW_WORD.
write.c (fixup_segment): check for signed .word overflow if
WARN_SIGNED_OVERFLOW_WORD.
* input-scrub.c (input_scrub_push): call input_file_begin, not
input_scrub_begin.
messages.c (as_perror): print ": " between the passed in error and
the strerror, like perror does.
* tc-m68k.c (m68k_ip, m68k_ip_op, get_num, try_moto_index): merge
Motorola and MIT syntax; gas can now assemble either type of
file.
tc-m68kmote.c, tc-m68kmote.h: removed now superfluous files.
From Steve Chamberlain:
m68kcoff.mt: for m68k COFF.
obj-coffbfd.c: (fixup_mdeps) added
(size_section) removed bad sanity check
(fill_section) added rs_machine_dependent case
(write_object_file) call fixup_mdeps
(fixup_segment) set fx_subsy to 0.
obj-coffbfd.h: define WORKING_DOT_WORD (too hard to support) and
handle m68k.
tc-m68k.c, config/tc-m68k.h: added m68k COFF support and Motorala
pseudo ops.