* configure.in: If cpu is powerpc*, use ppc.
(ppc-*-sysv4*): Use object format elf.
* config/tc-ppc.h: Only declare a number of things if OBJ_COFF is
defined.
(TARGET_ARCH): Make it call ppc_arch.
(ppc_arch): Declare.
(TARGET_FORMAT): Set based on OBJ_COFF or OBJ_ELF.
(NO_STRING_ESCAPES): Define.
(LOCAL_LABEL, FAKE_LABEL_NAME): Define for OBJ_ELF.
* config/tc-ppc.c: Only define a number of functions of OBJ_COFF
is defined.
(md_pseudo_table): Most pseudo-ops are OBJ_COFF specific. Added
OBJ_COFF specific "bi" and "ei".
(md_parse_option): Fix handling of -u. Make -m601 set
PPC_OPCODE_601. If OBJ_ELF, accept -V and -Q.
(ppc_set_cpu): New function.
(ppc_arch): New function.
(md_begin): Call ppc_set_cpu.
(ppc_insert_operand): For a signed operand accept an unsigned
value, for IBM compatibility.
(ppc_byte): Don't call stringer for strings; instead, treat two
double quotes as a single double quote.
(ppc_comm): Set sy_tc.output for a .lcomm symbol.
(ppc_biei): New function.
(ppc_tc): If not OBJ_COFF, ignore first argument.
(ppc_fix_adjustable): Call as_bad_where, not as_bad.
(ppc_is_toc_sym): New function.
(md_apply_fix): Use ppc_is_toc_sym. Handle BFD_RELOC_16 and
BFD_RELOC_8.
(2) move explanation of new MIPS options from summary section to MIPS-options
section; add summaries in appropriate spots.
(3) usual minor rephrasing in passing.
* config/obj-coffbfd.c (obj_coff_init_stab_section): Use memset
instead of memcpy to zero the initial stab symbol, duh.
* config/obj-elf.c (obj_elf_init_stab_section): Ditto.
* config/obj-som.c (obj_som_init_stab_section): Ditto.
precedence questions.
(addr32): New static variable.
(md_parse_option): Set it for "-32addr".
(load_symbol_address): If addr32 is set, use ldl instead of ldq.
return type to valueT, to agree with tc.h.
(alpha_do_align): Local static array nop_pattern is now unsigned
char, to avoid overflow warnings.
* tc-alpha.h (md_section_align): Delete declaration.
* obj-ecoff.c (ecoff_frob_file): Ensure that ecoff_data for
output bfd is non-null before indirecting through it.
Crock to get GP set right:
* tc-alpha.c (alpha_frob_ecoff_data): Renamed from alpha_frob_file.
* tc-alpha.h (tc_frob_file): Macro deleted.
* obj-ecoff.c (ecoff_frob_file) [TC_ALPHA]: Call alpha_frob_ecoff_data, then
fill in optional-header info with gp value and register masks.
* config/obj-coffbfd.c (obj_coff_init_stab_section): Zero the
initial stab symbol after allocating it.
* config/obj-elf.c (obj_elf_init_stab_section): Ditto.
This fixes a critical bug observed in Q4 for Lynx.
* subsegs.h (struct frchain): If BFD_ASSEMBLER, added new fields
fix_root and fix_tail.
(segment_info_type): If BFD_ASSEMBLER, don't define fix_tail
field.
* write.c (fix_new_internal): If BFD_ASSEMBLER, set fix_rootP and
fix_tailP based on frchain_now, not seg_info (now_seg).
(chain_frchains_together_1): Chain the subsegment relocs together.
* subsegs.c (subseg_change): Don't clear fix_tail field.
(subseg_get): Likewise.
* literal.c (add_to_literal_pool): Look through the relocs via
frchain_now, not seginfo.
* write.c (write_object_file): Simplified usage of obj_frob_symbol
and tc_frob_symbol. Always call both if the symbol is going to be
output.
* write.c (relax_segment): Use %ld rather than %d when printing
fragP->fr_var, and cast it to long.
ecoff_undefined.
(ecoff_frob_symbol): Don't check ecoff_undefined.
(ecoff_build_symbols): Get size of an undefined symbol from
sym->ecoff_extern_size, not S_GET_VALUE (sym).
declare it differently.
(Actually, the only use is in xmalloc; if xmalloc didn't also zero out the
region of memory, I'd delete the function altogether and use the libiberty
version...)
dot_bss_symbol): Don't define if BFD_ASSEMBLER.
(obj_symbol_to_chars): bfd_coff_swap_aux_out now takes more
arguments.
(coff_line_base): Renamed from line_base. Changed all uses.
(coff_add_linesym): Renamed from add_line_sym. Made non-static.
Changed all uses.
* config/obj-coff.h: If TC_PPC, include coff/rs6000.h.
(S_SET_STORAGE_CLASS, S_GET_STORAGE_CLASS): Declare if
BFD_ASSEMBLER.
(coff_line_base): Declare.
(coff_add_linesym): Declare if BFD_ASSEMBLER.
This version formats cleanly under makeinfo, and in Cygnus format.
Default FSF format works without error, but tables of machine
instructions for some machines have stupid page boundaries (FSF
version uses larger page size).
(2) leading comments for future updates, about places to check for new
directives
(3) doc for new portable ".string" directive
(4) minor updates to dates etc.
not apocryphal.
apoc-ry-phal \-fel\ adj
(1590)
1 often cap: of or resembling the Apocrypha
2: of doubtful authenticity: SPURIOUS
syn see FICTITIOUS
pro-ver-bi-al \pre-'ver-be^--el\ adj
(1548)
1: of, relating to, or resembling a proverb
2: that has become a proverb or byword: commonly spoken of
for md_do_align macro, give it a chance to bypass all but recording of section
alignment.
(s_align_bytes, s_align_ptwo): Call do_align.
(s_lcomm) [TC_ALPHA]: Align object to largest power of two that divides object
size.
out because $CVSROOT was wrong...)
* write.c (write_object_file): If tc_frob_file is defined, call it
just before calling obj_frob_file.
* config/tc-alpha.c (alpha_gp_value): Renamed from gp_value
(references changed), and made non-static.
(getExpression): Return void.
(select_gp_value): Abort if gp_value is non-zero. Delete call to
non-existent bfd_set_gp_value.
(alpha_validate_fix): Function deleted.
(alpha_frob_symbol): Function deleted.
(alpha_local_label): Function deleted.
(alpha_frob_file): Renamed from alpha_end.
* config/tc-alpha.h (alpha_frob_symbol, alpha_validate_fix,
alpha_local_label, alpha_end): Declarations deleted.
(alpha_gp_value, alpha_frob_file): Declare.
(tc_frob_symbol, TC_VALIDATE_FIX, md_end): Macros deleted.
(LOCAL_LABEL): Move code here from tc-alpha.c:alpha_local_label.
(md_convert_frag): Simplified slightly.
(tc_frob_file): New macro.
just before calling obj_frob_file.
* config/tc-alpha.c (alpha_gp_value): Renamed from gp_value (refs changed), made
non-static.
(getExpression): Return void.
(select_gp_value): Abort if gp_value is non-zero. Delete call to non-existent
bfd_set_gp_value.
(alpha_validate_fix): Function deleted.
(alpha_frob_symbol): Function deleted.
(alpha_local_label): Function deleted.
(alpha_frob_file): Renamed from alpha_end.
* config/tc-alpha.h (alpha_frob_symbol, alpha_validate_fix, alpha_local_label,
alpha_end): Declarations deleted.
(alpha_gp_value, alpha_frob_file): Declare.
(tc_frob_symbol, TC_VALIDATE_FIX, md_end): Macros deleted.
(LOCAL_LABEL): Move code here from tc-alpha.c:alpha_local_label.
(md_convert_frag): Simplified slightly.
(tc_frob_file): New macro.
declare if BFD_ASSEMBLER.
(stack_pop): Correct test for stack underflow.
(obj_coff_endef, obj_coff_dim, obj_coff_line, obj_coff_size,
obj_coff_scl, obj_coff_tag, obj_coff_type, obj_coff_val): Declare
type of ignored argument to avoid gcc warning.
(align): Removed unused function.
Still to do:
- fix floating-point handling
- figure out if we can adapt to using ../opcodes/alpha-opc.h
- gcc bootstrap testing
- 32-bit mode support?
- test cross-assembly
* write.c (cvt_frag_to_fill): Don't assume that fr_var for rs_align or rs_org
frags will be 1.
(relax_segment): For rs_align, if fr_var is not 1, complain if
required padding is not a multiple of the size of the pad pattern.
(fixup_segment): Leave gp-relative relocations alone. For pcrel relocations
referring to the same segment, clear fx_pcrel when clearing fx_addsy.
* as.h: Adjust comments on rs_align.
* write.c, config/obj-{aout,bout,coff*}.c, config/tc-sparc.c: Query the fx_done
field instead of fx_addsy to see if the fixup still needs to be applied. Set
fx_done and clear fx_addsy both, for now. If TC_HANDLES_FX_DONE isn't defined,
assume md_apply_fix will only clear fx_addsy, and set fx_done accordingly after
returning.
* config/tc-sparc.h (TC_HANDLES_FX_DONE): Define.
* config/obj-coff.c (dot_text_symbol, dot_data_symbol, dot_bss_symbol): Defined
here, static.
* config/obj-aout.c [BFD_ASSEMBLER]: Undef NO_RELOC before including aout/aout64.h.
* write.c (write_object_file): If EMIT_SECTION_SYMBOLS is false, don't write
out a section symbol even if it's used in a relocation; assume relocations will
handle section numbers somehow. Rename "punt_it" label to "punt_it_if_unused"
to reflect it's true use.
(EMIT_SECTION_SYMBOLS): Default to 1.
(adjust_reloc_syms): Don't create a new symbol for an absolute
reference; just use the absolute section symbol.
(write_relocs): Make printout of reloc values dependent on flag DEBUG3, not
DEBUG2.
* config/obj-aout.h (EMIT_SECTION_SYMBOLS): Define as 0.
* config/obj-ecoff.h (EMIT_SECTION_SYMBOLS): Ditto.
(symbol_begin): Moved to end of file, so function inlining can work better.
(fb_label_count, fb_label_max): Default C static initializers are sufficient.
* symbols.h (dot_text_symbol, dot_data_symbol, dot_bss_symbol): Declarations
deleted.
symbols of known size in the undefined section. Put small common
symbols in a .scommon section.
* ecoff.h (ecoff_frob_symbol): Declare.
* config/obj-ecoff.h (obj_frob_symbol): Define.
* config/obj-elf.c (obj_elf_write_symbol_p, obj_elf_write_symbol,
obj_elf_frob_symbol): Removed unused functions.
* config/obj-elf.h (obj_frob_symbol, obj_write_symbol): Removed
unused macros.
(obj_elf_frob_symbol, obj_elf_write_symbol): Removed declarations
of unused functions.
(obj_frob_symbol): Define if ECOFF_DEBUGGING.
(md_parse_option): Set g_switch_seen for -G option.
(s_option): If creating PIC code, force the GP size to be 0. Warn
if -G switch used with a non-zero value.
with explicitly marked stabs through BFD: if a symbol marked
N_UNDF | N_EXT is in the absolute section, move it to the
undefined section; move a symbol marked N_INDR into
bfd_ind_section and set the BSF_INDIRECT flag.
(current_file_idx): New static variable.
(add_file): Use and increment current_file_idx instead of indx parameter.
Also removed trailing whitespace from lines.
(i386-*-netbsd0.8): New target, like 386bsd.
* configure.in: Set BFDDEF in Makefile to "define" or "undef".
* Makefile.in (config.h): Protect against multiple inclusions. Define or undef
BFD_ASSEMBLER as specified by $(BFDDEF).
(ALL_CFLAGS): Omit $(BFDDEF).
for each section.
(adjust_code_sections): New function. Adjusts the VMA for all the
$CODE$ subspaces.
* config/tc-hppa.c (md_assemble): Also handle creating a fixup
for the unwind descriptors if a function's label follows the
.PROC and .ENTRY directives.
(pa_entry): Don't set BSF_FUNCTION for the label symbol here; it
is done elsewhere. Don't create a fixup for the unwind
descriptors if the function's label has not been defined yet.
(pa_proc): For SOM, place each procedure within a new $CODE$
subspace. Adjust the segment and frag for the associated
function label if it exists.
set then a new segment is always created. All callers changed.
(subseg_force_new): New function. Similar to subseg_new, but
always force a new segment to be created.
* config/obj-som.c (som_frob_file): Call adjust_code_sections
for each section.
(adjust_code_sections): New function. Adjusts the VMA for all the
$CODE$ subspaces.
* config/tc-hppa.c (md_assemble): Also handle creating a fixup
for the unwind descriptors if a function's label follows the
.PROC and .ENTRY directives.
(pa_entry): Don't set BSF_FUNCTION for the label symbol here; it
is done elsewhere. Don't create a fixup for the unwind
descriptors if the function's label has not been defined yet.
(pa_proc): For SOM, place each procedure within a new $CODE$
subspace. Adjust the segment and frag for the associated
function label if it exists.
set then a new segment is always created. All callers changed.
(subseg_force_new): New function. Similar to subseg_new, but
always force a new segment to be created.
(hppa_fix_new): Initialize segment field.
(md_apply_fix): Do nothing for pc-relative fixup which involves
crossing a segment boundary.
(pa_procend): Undefine the current label after handling .PROC
and .PROCEND directives.
(dummy_symbol): Make type "symbolS *". Change references as
appropriate.
char.
* write.c (adjust_reloc_syms): Remove unused variable symseginfo.
(write_object_file): Don't define punt_it if it won't be used.
(fixup_segment): Don't define skip if it won't be used.
(special_sections): Define.
(obj_elf_special_section): Get default types and attributes from
list of special sections.
* config/tc-mips.c (ELF_TC_SPECIAL_SECTIONS): Define.
* listing.c: Include subsegs.h.
(listing_prev_line): New function.
(calc_hex): Reset byte_in_frag to zero for each new frag.
* config/tc-mips.c (append_insn): Call listing_prev_line after
emitting nop instructions.
* Makefile.in (listing.o): Depends upon subsegs.h.
here. Handle case where label may be defined after the .PROC.
(pa_proc): It is not an error if the procedure's label isn't
defined before the .PROC directive.
with the associate stabs information.
(ecoff_build_symbols): Never set the type of stabs symbols to
st_Global. Don't update the symbol index or ifd if the gas symbol
is not the same as the ECOFF symbol (which is now the case for
stabs symbols).
* Makefile.in (INCLUDES): Add $(srcdir)/.. to places to search.
* config/obj-ecoff.c: Include files as "bfd/" instead of "../bfd/".
* app.c, flonum.h, hex-value.c (const): Change #if to be more
portable.
* config.sub: Add MPW-related aliases.
* mpw-configure: New file, MPW version of configure.
* mpw-config.in: New file, MPW version of configure.in.
* mpw-xconfig.in: New file, addon to configure.in.
Mon Jan 3 12:42:45 1994 Stan Shebs (shebs@andros.cygnus.com)
* mpw-xconfig.in: New file, mpw x mips configuration bits.
(i.e., relocation against absolute), create a phony local symbol, and use it in
the reloc.
(fixup_segment): When adjusting a reloc with an absolute symbol, have
TC_FORCE_RELOCATION control clearing add_symbolP too.
* config/tc-sparc.h (RELOC_REQUIRES_SYMBOL): Define.
* tc.h (md_end): Don't declare it.
* config/tc-*.[ch] (md_end): Deleted, in cases where it doesn't do anything.
* config/tc-vax.c (vip_end): Deleted null function.
* config/tc-mips.c (md_mips_end): Renamed from md_end.
* config/tc-mips.h (md_mips_end): Declare.
(md_end): New macro, calls md_mips_end.
* write.c (write_object_file): Don't close output file.
* as.c (main): Close output file (if needed) after calling listing_print, which
should be after calling write_object_file, which sets the frag addresses.
const.
* config/obj-*.c, config/tc-*.c: Omit superfluous "return" statements at ends
of functions. Don't check for null return from hash_new, since it won't return
at all if there's no memory available. Also, check for null return from
hash_insert, rather than zero-length string, as success indicator.
* Makefile.in (site.exp): Don't set ASFLAGS. Quote value of OBJDUMPFLAGS in
case it's empty. Use temporary names until the end; make creating site.exp the
final step.
(check): Pass in ASFLAGS.
* gas/all/gas.exp: Use all_ones proc. Change regexp for matching
C comments to avoid bugs in latest expect code.
Breaks with the HP compilers.
* config/tc-hppa.c (struct call_info): Remove fields which were
set but never used. Remove all code which sets those fields.
(struct subspace_dictionary_chain): Likewise.
(struct space_dictionary_chain): Likewise.
(pa_desc): Delete useless function. Delete all references.
(hppa_tc_make_sections): No need to count the number of symbols for
the symbol extension section.
SOM BFD backend.
(obj_som_copyright): New function. Much like obj_som_version.
* config/tc-hppa.c (obj_copyright): Define as appropriate for
SOM and ELF.
(pa_copyright): Just a stub now.
* tc-hppa.c: (tc_gen_reloc): Addend for a plabel relocation should
be either 0 or 2 (no static link or static link required). Always
assume no static link.
(md_apply_fix_1): Rename to md_apply_fix. Fix argument decls.
Fix comments in various places. Always return a value.
Avoid dereferencing a NULL fx_addsy.
(hppa_force_relocation): Avoid dereferencing a NULL fx_addsy.
- sparc[lite]-coff as well as sparc-lynx
- producing coff (including debug info) under BFD_ASSEMBLER option
- cleanup of cpu-specific code in non-cpu-specific files
(especially write.c)
- providing common code to avoid duplication in cpu-specific files
(specifically, md_number_to_chars)
- stylistic changes & misc cleanup
================
* config/tc-sparc.c (tc_gen_reloc): Make adjustment to addend be dependent on
howto fields, not on format flavour.
* struc-symbol.h (struct symbol): New fields sy_obj and sy_tc, defined as types
OBJ_SYMFIELD_TYPE and TC_SYMFIELD_TYPE, if those macros are defined.
* config/obj-coff.h (TC_SYMFIELD_TYPE, OBJ_SYMFIELD_TYPE): Define.
(TARGET_SYMBOL_FIELDS, I960_SYM_FIELDS): Don't define.
(sy_tc, sy_obj): Define so that the fields look like they used to, until all
references get changed.
* write.c (fixup_segment): Lots of variables no longer register. Reordered
some code for easier reading.
* config/obj-coff.c (obj_coff_dim): dim_index no longer register. Deleted
superfluous return statement.
(obj_coff_line, obj_coff_size, obj_coff_scl, obj_coff_type, obj_coff_val,
tag_init, tag_insert): Deleted superfluous return statement.
(align, obj_coff_section): Deleted debugging printfs.
* config/tc-i386.c (md_assemble): Discard some register decls. Use assignment
rather than memcpy to copy template.
(op_hash, reg_hash, prefix_hash): Default C initialization of statics is
sufficient.
* config/tc-sparc.c (print_insn): Array Reloc is now const, and points to
const.
* config/obj-coff.h (TARGET_FORMAT): Only use coff-sparc-lynx if TE_LYNX; use
coff-sparc otherwise.
[USE_NATIVE_HEADERS]: Delete this code; it isn't used.
* write.c (fixup_segment): Call TC_VALIDATE_FIX, if defined, before processing
a fixup. Call TC_ADJUST_RELOC_COUNT just before returning. Remove some
i960-coff-specific code.
(TC_ADJUST_RELOC_COUNT): Default to doing nothing.
* config/tc-i960.h (TC_ADJUST_RELOC_COUNT) [OBJ_COFF]: Define.
(i960_validate_fix): Declare.
(TC_VALIDATE_FIX): Define.
* config/tc-i960.c (i960_validate_fix): New function.
* write.c (number_to_chars_littleendian): New function. Write out bytes in
little endian order, doing size and range checking.
(number_to_chars_bigendian): New function, similar.
* write.h: Declare them.
* config/tc-*.c (md_number_to_chars): Use them.
* config/tc-vax.c (md_apply_fix): Ditto.
* config/tc-i386.c (md_apply_fix): Ditto.
* config/obj-coff.c: Rearranged code for handling line number data.
(line_fsym): Renamed from function_lineoff in BFD_ASSEMBLER case, since the
usage is different from non-BFD_ASSEMBLER case.
(in_function, clear_function, set_function): New macros, to combine some of the
functionality implemented in differnet ways in BFD_ASSEMBLER and non-... code.
Used in other functions that used to check function_lineoff &c.
(obj_emit_lineno): Split into two copies, one for BFD_ASSEMBLER, one for not.
Non-BFD_ASSEMBLER version now has temporary variable to contain char* pointer
pointed to by char** argument. Always follow CROSS_COMPILE code; easier to
read that way.
(obj_coff_ln): Don't call add_lineno or c_line_new if appline is set.
(obj_coff_endef) [BFD_ASSEMBLER]: Don't do anything special for ".bf", it's
been done elsewhere.
(coff_frob_symbol): If ilne number data is pending, call add_linesym to flush it.
(coff_frob_file): Don't do that here.
* config/obj-coff.h (coff_frob_file): Declare.
(obj_frob_file): Define, to call it.
* config/tc-sparc.h (md_create_short_jump, md_create_long_jump,
md_estimate_size_before_relax: Define them as macros calling as_fatal.
* config/tc-sparc.c: Don't define them as functions.
(fixup_segment): Allow the target machine to specify that a
relocation must be generated for a particular fixup. Remove
#ifndef TC_HPPA hack.
* config/tc-hppa.h (TC_FORCE_RELOCATION): Define.
* config/tc-hppa.c (md_apply_fix_1): Never change fx_addsy to
be NULL. Only fixup_segment is supposed to do that.
(hppa_force_relocation): New function.
exists before trying to peek at its name.
(pa_space): Do not call pa_align_subseg. See hppa/unsorted/align3.s
for testcase.
(pa_align_subseg): Delete unused/unwanted function.
on the end of a label. Make code conditional on either MRI or
LABELS_WITHOUT_COLONS.
* app.c (do_scrub_next_char): If a line begins with whitespace, leave
the single whitespace character alone. Eat all others.
* config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define.
that the directives are not interpreted as labels.
* gas/hppa/basic/weird.s: Sync with GDB version.
* gas/hppa/more.parse/labelbug.s: New test.
* gas/hppa/more.parse/parse.exp: Run it.
Changed to not actually build the external symbol information, as
that is now done by the ECOFF back end.
(ecoff_build_debug): Changed accordingly.
* ecoff.h (obj_ecoff_set_ext): Declare. obj-format.c function
called by ecoff_setup_ext.
* config/obj-ecoff.c (ecoff_frob_file): If debug_info count is 0,
set corresponding pointer to NULL. Don't set raw_size and
raw_syments.
(obj_ecoff_set_sym_index): Removed.
(obj_ecoff_set_ext): New function.
* config/obj-ecoff.h (obj_set_sym_index): Don't define.
(obj_ecoff_set_sym_index): Don't declare.
* config/obj-elf.c (obj_ecoff_set_ext, elf_get_extr,
elf_set_index): New functions used for ECOFF_DEBUGGING.
(elf_frob_file): Reworked ECOFF debug generation to use
new functions in bfd/ecofflink.c.