* config/tc-mips.c (RELAX_ENCODE): Remove WARN argument.
(RELAX_FIRST, RELAX_SECOND): Turn into 8-bit quantities.
(RELAX_USE_SECOND): Bump to 0x10000.
(RELAX_SECOND_LONGER, RELAX_NOMACRO, RELAX_DELAY_SLOT): New flags.
(mips_macro_warning): New variable.
(md_assemble): Wrap macro expansion in macro_start() and macro_end().
(s_cpload, s_cpsetup, s_cprestore, s_cpreturn): Likewise.
(relax_close_frag): Set mips_macro_warning.first_frag. Adjust use
of RELAX_ENCODE.
(append_insn): Update mips_macro_warning.sizes.
(macro_start, macro_warning, macro_end): New functions.
(macro_build): Don't emit warnings here.
(macro_build_lui, md_estimate_size_before_relax): ...or here.
(md_convert_frag): Check for cases where one macro alternative
needs a warning and the other doesn't. Emit a warning if the
longer sequence was chosen.
* config/tc-mips.h (tc_frag_data_type, TC_FRAG_TYPE): Remove.
* config/tc-mips.c (RELAX_ENCODE): Take three arguments: the size of
the first sequence, the size of the second sequence, and a flag
that says whether we should warn.
(RELAX_OLD, RELAX_NEW, RELAX_RELOC[123]): Delete.
(RELAX_FIRST, RELAX_SECOND): New.
(mips_relax): New variable.
(relax_close_frag, relax_start, relax_switch, relax_end): New fns.
(append_insn): Remove "place" argument. Use mips_relax.sequence
rather than "place" to check whether we're expanding the second
alternative of a relaxable macro. Remove redundant check for
branch relaxation. If generating a normal insn, and there
is not enough room in the current frag, call relax_close_frag()
to close it. Update mips_relax.sizes[]. Emit fixups for the
second version of a relaxable macro. Record the first relaxable
fixup in mips_relax. Remove tc_gen_reloc workaround.
(macro_build): Remove all uses of "place". Use mips_relax.sequence
in the same way as in append_insn.
(mips16_macro_build): Remove "place" argument.
(macro_build_lui): As for macro_build. Don't drop the add_symbol
when generating the second version of a relaxable macro.
(load_got_offset, add_got_offset): New functions.
(load_address, macro): Use new relaxation machinery. Remove
tc_gen_reloc workarounds.
(md_estimate_size_before_relax): Set RELAX_USE_SECOND if the second
version of a relaxable macro is needed. Return -RELAX_SECOND if the
first version is needed.
(tc_gen_reloc): Remove relaxation handling.
(md_convert_frag): Go through the fixups for a relaxable macro and
mark those that belong to the unneeded alternative as done. If the
second alternative is needed, adjust the fixup addresses to account
for the deleted first alternative.
testsuite/
* gas/mips/elf-rel19.[sd]: New test.
* gas/mips/mips.exp: Run it.
David Carlton [Thu, 22 Jan 2004 19:56:54 +0000 (19:56 +0000)]
2004-01-22 David Carlton <carlton@kealia.com>
* dwarf2read.c (psymtab_to_symtab_1): Calculate lowpc, highpc via
get_scope_pc_bounds.
(read_file_scope): Ditto.
(get_scope_pc_bounds): New function, produced by extracting code
from the above two functions, consolidating it, and adding support
for DW_TAG_namespace.
Eli Zaretskii [Wed, 21 Jan 2004 18:46:23 +0000 (18:46 +0000)]
* utils.c (init_page_info): Move declarations of `rows' and
`cols' before the __GO32__-specific code. Move the closing brace
outside the #ifdef __GO32__..#endif block.
[__GO32__]: Use `rows' and `cols' to avoid compiler warnings.
Danny Smith [Tue, 20 Jan 2004 21:08:16 +0000 (21:08 +0000)]
* pe-dll.c (pe_create_import_fixup): Clear WP_TEXT flag.
* ld.texinfo (--omagic): Note that writable text section
does not conform to published PE-COFF specs.
(--enable-auto-import): Likewise.
Chris Demetriou [Tue, 20 Jan 2004 07:06:14 +0000 (07:06 +0000)]
2004-01-19 Chris Demetriou <cgd@broadcom.com>
* mips.igen (check_mf_cycles, check_mt_hilo, check_mf_hilo)
(check_mult_hilo): Improve comments.
(check_div_hilo): Likewise. Also, fork off a new version
to handle mips32/mips64 (since there are no hazards to check
in MIPS32/MIPS64).
Kevin Buettner [Mon, 19 Jan 2004 16:49:35 +0000 (16:49 +0000)]
* target.c (default_region_size_ok_for_hw_watchpoint): Compare
the region size against the size of a pointer, not the size of
a register as given by DEPRECATED_REGISTER_SIZE.
Mark Kettenis [Sun, 18 Jan 2004 21:22:50 +0000 (21:22 +0000)]
* dwarf2-frame.c (execute_cfa_program): Move DWA_CFA_nop before
DW_CFA_def_cfa_exporession. Add support for
DW_CFA_offset_extendend_sf, DW_CFA_def_cfa_sf and
DW_CFA_def_cfa_offset_sf. This should fix PR backtrace/1391.
* config/gdbserver.exp (gdbserver_gdb_load): Rename from gdb_load.
Remove downloading, guessing the host executable, the calls to
gdb_file_cmd and gdb_target_cmd, and "load" support.
(infer_host_exec): New function broken out from gdb_load.
(gdb_load): New wrapper for gdbserver_gdb_load.
* lib/mi-support.exp (mi_gdb_target_cmd): New function, based on
gdb_target_cmd. Use -target-select.
(mi_gdb_file_cmd): New function, broken out from mi_gdb_load.
Download binaries to the host. Clear last_mi_remote_file when
we load a new binary.
(mi_gdb_load): Call mi_gdb_file_cmd. If gdbserver.exp is loaded,
call gdbserver_gdb_load and mi_gdb_target_cmd.
Suggested by George Anzinger.
* dwarf2expr.c (execute_stack_op): Fetch the second item from the
correct stack offset. Include unknown opcode numbers in the error
message.
Andrew Cagney [Sat, 17 Jan 2004 22:45:44 +0000 (22:45 +0000)]
2004-01-17 Andrew Cagney <cagney@redhat.com>
* x86-64-tdep.c (x86_64_init_abi): No need to clear
extract_struct_value_address, i386 does not set it.
* sparc64-tdep.c (sparc64_init_abi): Do not set
extract_struct_value_address, never called.
(sparc64_extract_struct_value_address): Delete function.
* m68hc11-tdep.c: Update copyright.
(m68hc11_gdbarch_init): Delete redundant assignment of
extract_struct_value_address.
* i386-tdep.c: Update copyright.
(i386_gdbarch_init): Do not set extract_struct_value_address,
never called.
(i386_extract_struct_value_address): Delete function.
* sparc-tdep.c (sparc32_gdbarch_init): Do not set
extract_struct_value_address, never called.
(sparc32_extract_struct_value_address): #if 0 function.
Andrew Cagney [Sat, 17 Jan 2004 19:38:58 +0000 (19:38 +0000)]
2004-01-17 Andrew Cagney <cagney@redhat.com>
* xstormy16-tdep.c: Update copyright.
(xstormy16_extract_struct_value_address): Update to current
extract struct value address interface.
(xstormy16_gdbarch_init): Set extract_struct_value_address.
* sh64-tdep.c (sh64_extract_struct_value_address): Update to
current extract struct value address interface.
(sh64_gdbarch_init): Set extract_struct_value_address.
Andrew Cagney [Sat, 17 Jan 2004 18:52:33 +0000 (18:52 +0000)]
2004-01-17 Andrew Cagney <cagney@redhat.com>
* cris-tdep.c: Update copyright.
(cris_extract_struct_value_address): Delete function.
(struct_return_address): Delete variable.
(cris_store_struct_return): Do not set struct_return_address.
Andrew Cagney [Sat, 17 Jan 2004 17:01:32 +0000 (17:01 +0000)]
2004-01-17 Andrew Cagney <cagney@redhat.com>
* hppa-tdep.c: Update copyright year.
(hppa_target_write_pc): Use PCOQ_TAIL_REGNUM instead
of NPC_REGNUM.
(hppa_gdbarch_init): Do not set deprecated_npc_regnum.
Andrew Cagney [Sat, 17 Jan 2004 16:40:42 +0000 (16:40 +0000)]
2004-01-17 Andrew Cagney <cagney@redhat.com>
* mips-tdep.c (mips_write_pc): New function.
(mips_gdbarch_init): Set "write_pc" to "mips_write_pc".
(mips_read_pc): Use mips_regnum instead of PC_REGNUM.
(mips_find_saved_regs, mips_software_single_step: Ditto.
(mips_frame_saved_pc, mips_frame_saved_pc): Ditto.
mips_init_extra_frame_info, mips_pop_frame): Ditto.