Ian Lance Taylor [Tue, 18 Oct 1994 15:49:53 +0000 (15:49 +0000)]
* objcopy.c (struct section_list): Add fields used, adjust, val.
(adjust_start, set_start_set, set_start): New static variables.
(adjust_section_vma, adjust_sections): New static variables.
(copy_options): Add --adjust-start, --adjust-vma,
--adjust-section-vma, --adjust-warnings, --no-adjust-warnings,
--set-start.
(parse_vma): New static function.
(copy_usage): Mention new options.
(copy_object): Handle --set-start and --adjust-start.
(setup_section): Correct type of last argument to PTR. Set used
field if section is removed. Handle --adjust-vma and
--adjust-section-vma.
(copy_section): Correct type of last argument to PTR.
(mark_symbols_used_in_relocations): Likewise.
(strip_main): Clear used field when handling -R.
(copy_main): Handle new options.
* binutils.texi (objcopy): Document new options.
* objcopy.1: Document new options.
Rob Savoye [Tue, 18 Oct 1994 00:55:51 +0000 (00:55 +0000)]
* monitor.c (set_loadtype_command): Fixed so it doesn't core dump.
* monitor.c (monitor_load): check the load type and load the file
accordingly. Default to gr_load_image().
* monitor.c (monitor_load_ascii_srec): Load an ascii file in
srecord format by downloading to the monitor.
* w89k-rom.c, op50n-rom.c: set supported load types.
Ian Lance Taylor [Mon, 17 Oct 1994 23:51:25 +0000 (23:51 +0000)]
* elfcode.h (elf_map_symbols): Sort the symbols into a new array,
rather than messing with Elf_Sym_Extra. Store the symbol index in
the udata.i field.
(swap_out_syms): Use outbound_syms as a pointer rather than as an
array. Don't worry about elf_sym_num.
(elf_symbol_from_bfd_symbol): Use udata.i rather than just udata.
* libelf.h (struct elf_sym_extra): Don't define.
(Elf_Sym_Extra): Don't define.
(struct elf_obj_tdata): Remove sym_extra field.
(elf_sym_extra): Don't define.
* elf32-hppa.c (elf32_hppa_backend_final_write_processing): Use
udata.i rather than elf_sym_extra array.
(elf32_hppa_backend_symbol_table_processing): Don't set
symextn_hdr->size; just use sh_size.
Ian Lance Taylor [Mon, 17 Oct 1994 22:03:14 +0000 (22:03 +0000)]
Use a hash table when writing out ELF symbol names.
* elfcode.h (elf_stringtab_init): New static function.
(bfd_new_strtab, bfd_add_to_strtab, bfd_add_2_to_strtab): Remove.
Change all callers to use elf_stringtab_init or
_bfd_stringtab_add, and get stringtab lengths using
_bfd_stringtab_size.
(elf_fake_sections): Change ignored argument to pointer to
boolean, and set the boolean to true if an error occurs. If an
error has already occurred, don't do anything.
(assign_section_numbers): Just set sh_size, not contents.
(elf_compute_section_file_positions): Pass the address of a
boolean to elf_fake_sections. Pass the address of a
bfd_strtab_hash to swap_out_syms. Write out the .strtab section.
(prep_headers): Change shstrtab to bfd_strtab_hash.
(swap_out_syms): Take a pointer to a bfd_strtab_hash as an
argument. Set it to the symbol names.
(NAME(bfd_elf,write_object_contents)): Write out the section
header names using _bfd_stringtab_emit.
(elf_debug_section): Remove first argument; get the section name
via the bfd_section pointer. Change caller.
(elf_bfd_final_link): Write out the symbol names using
_bfd_stringtab_emit. Likewise for the .dynstr section contents.
Free the symbol names at the end of the function.
(elf_link_input_bfd): Remove the last argument, output_names,
from relocate_section. Save the old symbol contents before
calling elf_link_output_sym, and restore them afterward.
* libelf.h (struct elf_link_hash_table): Change dynstr field to
struct bfd_strtab_hash.
(struct elf_backend_data): Remove last argument, output_names,
from elf_backend_relocate_section field.
(struct strtab): Don't define.
(struct elf_obj_tdata): Change strtab_ptr field to struct
bfd_strtab_hash.
* elf32-hppa.c (elf32_hppa_relocate_section): Remove last
argument, output_names.
* elf32-i386.c (elf_i386_relocate_section): Likewise.
* elf32-mips.c (mips_elf_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
Fix data and bss relocation for VxWorks 5.1:
* remote-vx.c (vx_add_symbols): New function.
(vx_load_command, add_symbol_stub): Call it instead of
symbol_file_add.
(vx_wait): Remove comment which was wrong to useless.
* remote-vx.c: Reindent much of file.
* coffread.c (cs_to_section, find_targ_sec): New functions.
(process_coff_symbol): Set SYMBOL_SECTION to result
from cs_to_section.
(coff_symtab_read): Call cs_to_section and deal appropriate
rather than assuming sections are in a certain order. Deal with
BSS.
* coffread.c: Remove text_bfd_scnum variable.
Ian Lance Taylor [Mon, 17 Oct 1994 18:27:40 +0000 (18:27 +0000)]
* elfcode.h (elf_swap_shdr_in): Use rawdata, not bfd_section.
Clear contents field.
(bfd_section_from_shdr): In SHT_STRTAB case, check bfd_section,
not rawdata. Don't set rawdata if e_shstrndx. Use bfd_section
rather than rawdata in commented out code. In SHT_REL[A] case,
don't bother to check elf_section_data of section returned by
section_from_elf_index.
(elf_fake_sections): Set bfd_section, not rawdata. Don't set
size.
(elf_map_symbols): Don't set elf_num_section_syms. Don't create
section symbols that already exist.
(assign_file_position_for_section): Use bfd_section, not rawdata.
(section_from_elf_index): Just check bfd_section field.
(elf_section_from_bfd_section): Likewise.
(elf_debug_section): Don't print rawdata, contents, or size.
(elf_link_add_object_symbols): Don't error out if
section_from_elf_index returns NULL.
(elf_bfd_final_link): Check return value from
section_from_elf_index against NULL, not bfd_is_abs_section.
(elf_link_input_bfd): Don't check section_from_elf_index return
value.
* libelf.h (struct elf_obj_tdata): Remove num_section_syms field.
(elf_num_section_syms): Don't define.
* elf.c (elf_get_str_section): Store section contents in contents
field rather than rawdata field.
(elf_string_from_elf_section): Likewise.
(_bfd_elf_make_section_from_shdr): Store BFD section pointer in
bfd_section field rather than rawdata field.
* elf32-hppa.c (elf32_hppa_read_symext_info): Use bfd_section
rather than rawdata.
(elf32_hppa_size_stubs): Likewise.
* elf32-mips.c (mips_elf_final_write_processing): Use bfd_section
rathern than rawdata.
(mips_elf_section_from_shdr): Likewise.
(mips_elf_section_processing): Likewise.
(mips_elf_section_from_bfd_section): Remove rawdata check.
Peter Schauer [Sat, 15 Oct 1994 10:50:07 +0000 (10:50 +0000)]
* eval.c (evaluate_subexp): Make fnptr a LONGEST instead
of using longest_to_int.
* infcmd.c (run_stack_dummy): Reinstate set_current_frame call,
mips and alpha targets need the real breakpoint pc for
creating the breakpoint frame.
* stack.c (return_command): Cast return value to the return
type of the function from which we return.
* values.c (set_return_value): Pass VALUE_CONTENTS unmodified
to STORE_RETURN_VALUE.
* symtab.c (lookup_symbol): Remove search for `static mangled
symbols', the search for `static symbols' already looks for
mangled and demangled symbols via lookup_block_symbol.
* valarith.c (value_binop): Use ANSI C arithmetic conversions
when performing integral evaluations, implement BINOP_EQUAL and
BINOP_LESS.
(value_equal, value_less): Use value_binop to perform the
comparison if both operands have TYPE_CODE_INT.
* rs6000-tdep.c (pop_frame): Make sure all registers are valid,
as they are written back later. Handle sp restore for frameless
functions. Use fdata.nosavedpc instead of fdata.frameless to
determine if the pc has been saved.
(function_frame_info): Handle `mr r31,r1', which is generated by
gcc-2.6, as a synonym for `oril r31,r1,0'.
(skip_trampoline_code): Handle shared library trampolines.
* xcoffread.c (read_xcoff_symtabs): Record XMC_GL symbols with
their real name. Enables setting of breakpoints in shared libraries
before the executable is run.
Rob Savoye [Sat, 15 Oct 1994 01:45:59 +0000 (01:45 +0000)]
* monitor.h, remote-mon.c: Hack up to so the old ROM monitor
interface code still works with the new ROM monitor
structures. Fake out a couple of fields.
Jim Kingdon [Thu, 13 Oct 1994 20:36:04 +0000 (20:36 +0000)]
* .gdbinit: Restore `end'; it was not excess. Reindent
list-objfiles to make this clear. Comment out all of
list-objfiles because old gdb's choke on it.
Ian Lance Taylor [Thu, 13 Oct 1994 15:26:35 +0000 (15:26 +0000)]
* scripttempl/aout.sc: Set _etext and __etext to ., not
${DATA_ALIGNMENT}. This is compatible with SunOS, and, with luck,
will not break any other system. From Eric Valette
<[email protected]>.
Stan Shebs [Thu, 13 Oct 1994 01:16:19 +0000 (01:16 +0000)]
* exec.c: Merge in RS6000 support from xcoffexec.c.
(symfile.h, objfiles.h, xcoffsolib.h): Include.
(vmap): New global variable.
(exec_close): Close and free objects in vmap chain.
(exec_file_command) [IBM6000_TARGET]: Set up initial vmap.
(bfdsec_to_vmap, map_vmap): Moved here from xcoffexec.c.
(exec_files_info): Print vmap information.
* xcoffexec.c: Remove.
* config/rs6000/rs6000.mt, config/rs6000/rs6000lynx.mt
(TDEPFILES): Use exec.o instead of xcoffexec.o.
* TODO: Remove pertinent items.
Ken Raeburn [Wed, 12 Oct 1994 21:39:54 +0000 (21:39 +0000)]
* opncls.c (bfd_realloc): Deleted, since it's broken and fixing it would make
it slow. Besides, it isn't used much.
* elfcode.h (elf_map_symbols): Always allocate new storage for the symbol table.
Ian Lance Taylor [Wed, 12 Oct 1994 18:11:52 +0000 (18:11 +0000)]
* config/tc-ppc.c (ppc_fix_adjustable): Resolve symbol values
rather than explicitly adding the frag address.
* config/obj-coff.c (coff_frob_symbol): Add a zero entry to mark
the end of the line numbers; this replaces the zero entry which
used to be added by coff_add_linesym, removed Oct 7.
(coff_adjust_section_syms): Ignore sections with no seginfo.
Update the RS/6000 assembler for recent gas changes.
Ken Raeburn [Wed, 12 Oct 1994 05:46:05 +0000 (05:46 +0000)]
* Makefile.in (bootstrap, bootstrap2, bootstrap3): Create a "stage" symlink to
the appropriate stage* directory, and use it instead in the -B options.
(comparison): Revert yesterday's change.
* elf32-i386.c (elf_i386_check_relocs): Make sure that a symbol
with a global offset table entry or a procedure linkage table
entry is added to the dynamic symbol table.
* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): If a symbol has
already gotten a procedure linkage table entry, change the
definition to the PLT entry.
* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise.
Ian Lance Taylor [Tue, 11 Oct 1994 21:08:57 +0000 (21:08 +0000)]
* lynx-nat.c (child_wait): Correct handling of byte reversed SPARC
Lynx wait status.
(fetch_core_registers): Don't try to fetch a register if
regmap maps it to -1.
* sparc-tdep.c (sparc_frame_find_saved_regs): Use FRAME_SAVED_I0
and FRAME_SAVED_L0 when setting saved_regs_addr. SPARC Lynx
stores the registers in a weird order.
These patches make SPARC Lynx gdb usable, though it still has problems.
Ian Lance Taylor [Tue, 11 Oct 1994 19:25:42 +0000 (19:25 +0000)]
* config/tc-mips.c (mips_ip): Don't use S_IS_LOCAL when checking
for an embedded PIC switch expression, since the definition of
S_IS_LOCAL was changed.
Ken Raeburn [Tue, 11 Oct 1994 19:12:55 +0000 (19:12 +0000)]
* Makefile.in (comparison): When comparing as.new or gasp.new, try running the
binary through sed to avoid differences due to "stage1" or "stage2" having been
written into the binary.
Ken Raeburn [Mon, 10 Oct 1994 20:38:06 +0000 (20:38 +0000)]
* cofflink.c (_bfd_coff_final_link): Cast argument to bfd_h_put_32 to correct
type.
(coff_read_string_table): Cast argument to bfd_h_get_32 to correct type.
* elfcode.h (elf_link_output_extsym): Cast argument to bfd_elf_hash to correct
type.
Peter Schauer [Sat, 8 Oct 1994 11:54:29 +0000 (11:54 +0000)]
Speed up GDB startup time by not demangling partial symbols.
* symfile.h (ADD_PSYMBOL_VT_TO_LIST),
symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list):
No longer demangle partial symbols.
* symtab.c (lookup_symbol, list_symbols): Handle mangled
variables, e.g. C++ static members, via the minimal symbols.
Handle reordered functions in an objfile, for Irix 5.2 shared
libraries.
* objfiles.h (OBJF_REORDERED): New bit in the objfile flags,
set if the functions in an objfile are reordered.
* mdebugread.c (parse_partial_symbols): Detect reordered
functions in an objfile.
* symtab.c (find_pc_psymtab, find_pc_symtab): Use expensive
lookup algorithm if the functions in the objfile are reordered.
* xcoffexec.c (exec_close): If the current target has a copy
of the exec_ops sections, reflect the freeing of the sections
in current_target.
* valops.c (call_function_by_hand): Use `sizeof dummy1', not
`sizeof dummy', for constructing the call dummy code.
* config/sparc/tm-sparc.h: Add PARAMS declarations to all
function declarations.
* sparc-tdep.c (sparc_pop_frame): Cast result of
read_memory_integer to CORE_ADDR when passing it to PC_ADJUST.
* irix5-nat.c (enable_break): Set breakpoint at the entry point
of the executable, to handle the case where main resides in a
shared library.
* irix5-nat.c (solib_create_inferior_hook): Reset stop_soon_quietly
after shared library symbol reading, to get rid of a warning from
heuristic_proc_start if the startup code has no symbolic debug info.
* breakpoint.h (struct breakpoint): Add new fields language
and input_radix, to enable breakpoint resetting with the
proper language and radix.
* breakpoint.c (set_raw_breakpoint): Initialize them.
(breakpoint_re_set_one): Use them when resetting the breakpoint.
(breakpoint_re_set): Preserve current language and input_radix
across breakpoint_re_set_one calls.
* symtab.c (decode_line_1): Do not build a canonical line
specification for `*expr' line specifications.
Jim Kingdon [Sat, 8 Oct 1994 03:41:21 +0000 (03:41 +0000)]
The point of these changes is to avoid reading the frame pointer
and stack pointer during stepping, to speed things up.
A. Changes to not select a frame until we need a selected frame:
* blockframe.c (flush_cached_frames): Call select_frame (NULL, -1).
* infrun.c (wait_for_inferior): Move call to select_frame back to
normal_stop. This reverts a change of 13 Apr 94 (it says Jeff
Law, but the change was my idea); the only reason for that change
was so we could save and restore the selected frame in
wait_for_inferior, and now that flush_cached frames clears the
selected frame, that should work OK now.
B. Changes to not create a current_frame until we need one:
* blockframe.c (get_current_frame): If current_frame is NULL, try
to create an innermost frame.
* sparc-tdep.c (sparc_pop_frame), infcmd.c (run-stack_dummy),
infrun.c (wait_for_inferior), thread.c (thread_switch),
convex-tdep.c (set_thread_command), a29k-tdep.c (pop_frame),
alpha-tdep.c (alpha_pop_frame), convex-xdep.c (core_file_command),
h8300-tdep.c (h8300_pop_frame), h8500-tdep.c (h8300_pop_frame),
hppa-tdep.c (hppa_pop_frame), i386-tdep.c (i386_pop_frame),
i960-tdep.c (pop_frame), m68k-tdep.c
(m68k_pop_frame), mips-tdep.c (mips_pop_frame), rs6000-tdep.c
(push_dummy_frame, pop_dummy_frame, pop_frame), sh-tdep.c
(pop_frame), config/arm/tm-arm.h (POP_FRAME),
config/convex/tm-convex.h (POP_FRAME), config/gould/tm-pn.h
(POP_FRAME), config/ns32k/tm-merlin.h (POP_FRAME),
config/ns32k/tm-umax.h (POP_FRAME), config/tahoe/tm-tahoe.h
(POP_FRAME), config/vax/tm-vax.h (POP_FRAME): Don't
call create_new_frame.
* corelow.c (core_open), altos-xdep.c (core_file_command),
arm-xdep.c (core_file_command), gould-xdep.c (core_file_command),
m3-nat.c (select_thread), sun386-nat.c (core_file_command),
umax-xdep.c (core_file_command): Don't call create_new_frame; do
call flush_cached_frames.
* blockframe.c (reinit_frame_cache): Don't call create_new_frame
or select_frame.
C. Changes to get rid of stop_frame_address and instead only
fetch the frame pointer when we need it.
* breakpoint.c (bpstat_stop_status): Remove argument
frame_address; use FRAME_FP (get_current_frame ()).
* infrun.c (wait_for_inferior): Don't pass frame pointer to
bpstat_stop_status.
* infrun.c (wait_for_inferior): Use FRAME_FP (get_current_frame
()) instead of stop_frame_address.
* infrun.c (save_inferior_status, restore_inferior_status),
inferior.h (struct inferior_status): Don't save and restore
stop_frame_address.
* inferior.h, infcmd.c, thread.c (thread_switch), m3-nat.c
(select_thread): Remove stop_frame_address and uses thereof.
D. Same thing for the stack pointer.
* infrun.c (wait_for_inferior): Remove stop_sp and replace
uses thereof with read_sp ().
E. Change to eliminate one nasty little spot where we were
wanting to know the frame pointer from before the current step
(idea from GDB 3.5, which saved my ass, because my other ideas of
how to fix it were very baroque).
* infrun.c: Remove prev_frame_address.
* infrun.c (wait_for_inferior, step_over_function): Use
step_frame_address instead of prev_frame_address.
F. Same basic idea for the stack pointer.
* inferior.h, infcmd.c: New variable step_sp.
* infcmd.c (step_1, until_next_command): Set it.
* infrun.c: Remove prev_sp and replace uses by step_sp.
* infrun.c (wait_for_inferior): If we get out of the step
range, then set step_sp to the current stack pointer before we
start going again.
Ken Raeburn [Fri, 7 Oct 1994 22:02:54 +0000 (22:02 +0000)]
* config/obj-coff.c (do_relocs_for): Test only TC_KEEP_FX_OFFSET, rather than
both it and TC_M88K.
(coff_adjust_section_syms): New function.
(coff_frob_section): For non-empty sections, create aux entry for the section
symbol, indicating the size.
(n_line_nos): New variable.
(add_lineno): Increment it.
(coff_add_linesym): Increment n_line_nos, don't call add_lineno.
(coff_frob_file): New function; map coff_adjust_section_syms over sections.
(obj_coff_line): Only reset line_base for .bf symbols.
* config/obj-coff.h (coff_adjust_section_syms, coff_frob_file): Declare.
(obj_frob_file): New macro.
* config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Renamed from
obj_frob_forward_symbol, and rewritten for new parameter list.
* top.c (target_byte_order_auto): New static variable.
(set_endian): Mention that ``auto'' is permitted.
(set_endian_auto): New static function.
(show_endian): Change message based on target_byte_order_auto.
(set_endian_from_file): New function.
(init_main): Add command ``auto'' to endianlist.
* exec.c (exec_file_command): Call set_endian_from_file.
* defs.h (set_endian_from_file): Declare.
J.T. Conklin [Fri, 7 Oct 1994 01:17:02 +0000 (01:17 +0000)]
* nlm/i386.c (flush_i_cache): New function, does nothing.
(frame_to_registers, registers_to_frame, set_step_traps,
clear_step_traps, do_status): Make non-static.
* defs.h: If TARGET_BYTE_ORDER_SELECTABLE is defined by tm.h,
define TARGET_BYTE_ORDER as target_byte_order, and declare
target_byte_order as an extern int, and define BITS_BIG_ENDIAN as
a test of TARGET_BYTE_ORDER.
* top.c: Several additions if TARGET_BYTE_ORDER_SELECTABLE is
defined:
(endianlist, target_byte_order): New variables.
(set_endian, set_endian_big, set_endian_little): New functions.
(show_endian): New function.
(init_cmd_lists): Initialize endianlist.
(init_main): Add commands ``set endian big'', ``set endian
little'', and ``show endian''.
* a29k-pinsn.c: Rewrite uses of TARGET_BYTE_ORDER and
BITS_BIG_ENDIAN to switch at run time rather than at compile time.
* coffread.c, dwarfread.c, findvar.c, mips-tdep.c: Likewise.
* remote-os9k.c, stabsread.c, valarith.c, valprint.c: Likewise.
* values.c: Likewise.
* mips-tdep.c: Rewrite uses of GDB_TARGET_IS_MIPS64 to switch at
run time rather than at compile time.
* config/mips/tm-mips.h (GDB_TARGET_IS_MIPS64): If not already
defined, define as 0.
(FIX_CALL_DUMMY): Rewrite to remove presumption that host and
target are similar.
* config/mips/tm-idt.h (TARGET_BYTE_ORDER_SELECTABLE): Define.
* config/mips/tm-idtl.h (TARGET_BYTE_ORDER_SELECTABLE): Define.
* config/mips/tm-idt64.h (TARGET_BYTE_ORDER_SELECTABLE): Define.
(BREAKPOINT): Remove definition.
* config/mips/tm-idtl64.h (TARGET_BYTE_ORDER_SELECTABLE): Define.
(BREAKPOINT): Remove definition.
* config/mips/tm-mips64.h (GDB_TARGET_IS_MIPS64): Define with a
value of 1, rather than without a value.
* config/mips/tm-bigmips64.h (GDB_TARGET_IS_MIPS64): Likewise.