* Makefile.in (pa64solib_h, somsolib_h): Delete.
(solib_pa64_h, solib_som_h): New.
(HFILES_NO_SRCDIR, ALLDEPFILES): Replace somsolib.h with solib-som.h.
(hppa-hpux-tdep.o, hpread.o): Update dependencies.
(pa64solib.o, somsolib.o): Delete.
(solib-pa64.o, solib-som.o): New.
* hppa-hpux-tdep.c: Include new solib interfaces.
(hppa_hpux_som_init_abi): Attach to SOM solib interface.
(hppa_hpux_elf_init_abi): Attach to PA64 ELF solib interface.
* hppa-tdep.c (internalize_unwinds): If solib_get_text_base method
is available, use it to determine the base of unwind records.
* hppa-tdep.h (gdbarch_tdep): Add new solib methods.
* hpread.c: Replace somsolib.h with solib-som.h.
(hpread_process_one_debug_symbol): Use target vector to get thread
start address.
* config/pa/hppa64.mt (TDEPFILES): Use new solib interface.
* config/pa/hppahpux.mt (TDEPFILES): Likewise.
* config/pa/hpux.mh (NATDEPFILES): Delete references to target objects.
* config/pa/tm-hppah.h: Use new solib interface.
* frame.c (get_prev_frame): When unwinding normal frames, check
that the PC isn't zero.
* hppa-tdep.c (hppa_stub_frame_unwind_cache): Delete check for a
zero PC.
* hppa-tdep.c (hppa_stub_Frame_unwind_cache): Stop unwinding if
unwinding from a frame with pc == 0.
(hppa_stub_frame_this_id): Likewise.
(hppa_stub_frame_prev_register): Only provide real values if the frame
cache is not NULL.
prototypes.
* hppa-tdep.c (hppa_read_pc): Rename from hppa_target_read_pc.
Make global. Remove HP-UX specific code. Use
frame_unwind_register_unsigned instead of
frame_unwind_register_signed.
(hppa_write_pc): Rename from hppa_target_write_pc. Make global.
Remove HP-UX specific code.
(hppa_unwind_pc): Make global. Remove HP-UX specific code.
(hppa_frame_prev_register_helper): Set "flags" register to zero
for all unwound frames.
(hppa_gdbarch_init): Adjust.
* hppa-hpux-tdep.c (HPPA_HPUX_SS_INSYSCALL): New define.
(hppa_hpux_read_pc, hppa_hpux_write_pc)
(hppa_hpux_unwind_pc): New functions.
(hppa_hpux_init_abi): Set read_pc, write_pc and unwind_pc.
* hppa-tdep.c (skip_prologue_hard_way): Make static, add
stop_after_branch parameter and use it to determine if we should look
at the delay slot of the first branch insn to find prologue insns.
(hppa_skip_prologue): Update comment and call to skip_prologue_hard_way.
(hppa_frame_cache): Likewise.
* hppa-tdep.c (hppa_frame_cache): Handle the cases when we start
unwinding after sp has been saved to the stack but before the end
of the prologue, and after the fp has been modified but before it has
been saved to the stack.
(hppa_frame_base_address, hppa_frame_base, hppa_frame_base_sniffer):
Remove superfluous definitions.
(hppa_gdbarch_init): Remove superfluous frame base sniffer.
* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline)
(hppa_hpux_skip_trampoline_code): Don't cache symbol values.
* hppa-linux-tdep.c (hppa_linux_in_dyncall): Likewise.
* hppa-tdep.c (hppa_symbol_address): New function definition.
* hppa-tdep.h (hppa_symbol_address): New function declaration.
* hppa-tdep.h (struct value): Forward declaration.
(gdbarch_tdep): Define tdep find_global_pointer method.
* hppa-tdep.c (hppa32_push_dummy_call): Find the global pointer
associated with the function we are trying to call, and write it
to the gp register.
(hppa32_convert_from_funct_ptr_addr): New function.
(hppa_find_global_pointer): New function.
(hppa_gdbarch_init): Set default find_global_pointer method; set
convert_from_func_ptr_addr method.
* hppa-linux-tdep.c (hppa_linux_find_global_pointer): New function.
(hppa_linux_init_abi): Set find_global_pointer method.
* Makefile.in (hppa-linux-tdep.o): Add value.h dependency.
* hppa-tdep.c (SR4EXPORT_LDIL_OFFSET, SR4EXPORT_LDO_OFFSET): Remove
unused symbols.
* hppa-tdep.h (HPPA_INSTRUCTION_SIZE): Remove, since there are no more
references.
* hppa-tdep.c (hppa_stub_frame_unwind_cache): For HPUX stub unwinding,
check to see if we are unwinding an export stub. Export stubs clobber
the %rp in the call path and stores the original rp in a stack slot.
* hppa-tdep.c (hppa_frame_prev_register_helper): New function to
do common handling of the pcoqt register.
(hppa_frame_prev_register, hppa_stub_frame_prev_register): Convert
to use helper function.
(hppa_frame_unwind_sniffer): Only use if unwind entry is present.
(hppa_fallback_frame_cache, hppa_fallback_frame_this_id)
(hppa_fallback_frame_prev_register, hppa_fallback_frame_unwind): New
generic fallback unwinder when all else fails.
(hppa_gdbarch_init): Add fallback sniffer.
* hppa-tdep.h (hppa_frame_prev_register_helper): Prototype.
* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_prev_register): Convert
to use helper function.
* configure.host (hppa*-*-linux*): New target.
* configure.tgt (hppa*-*-linux*): Likewise.
* hppa-tdep.c (hppa_gdbarch_init): Set cannot_fetch_register, move
gdbarch_init_osabi() call earlier so that osabi-specific frame
unwinders can be registered first.
* config/djgpp/fnchange.lst: Add entries for hppa-linux-tdep.c and
hppa-linux-nat.c.
* config/pa/tm-hppa.h (ISR_REGNUM, PID0_REGNUM, PID1_REGNUM)
(PID2_REGNUM, PID3_REGNUM): Add definitions of some register numbers.
* config/pa/linux.mh: New file.
* config/pa/linux.mt: New file.
* config/pa/nm-linux.h: New file.
* config/pa/xm-linux.h: New file.
* hppa-linux-nat.c: New file.
* hppa-linux-tdep.c: New file.
* hppa-tdep.c (hppa32_return_value): Handle both 4- and 8-byte fp
return values.
(hppa32_push_dummy_call): Fix small struct and floating point argument
passing, and make sure the stack frame is properly aligned.
* hppa-tdep.c (hppa_stub_unwind_cache, hppa_stub_frame_unwind_cache)
(hppa_stub_frame_this_id, hppa_stub_frame_prev_register)
(hppa_stub_frame_unwind, hppa_stub_unwind_sniffer): New stub unwinder
for handling stackless frames.
(hppa_gdbarch_init): Link in hppa_stub_unwind_sniffer.
* hppa-tdep.h (find_unwind_entry, hppa_get_field, hppa_extract_5_load)
(hppa_extract_5R_store, hppa_extract_5r_store, hppa_extract_17)
(hppa_extract_21, hppa_extract_14, hppa_low_sign_extend)
(hppa_sign_extend): Add prototype.
* hppa-tdep.c (get_field, extract_5_load, extract_5R_store)
(extract_5r_store, extract_17, extract_21, extract_14, low_sign_extend)
(sign_extend): Rename with hppa_ prefix and make non-static. Other
hppa targets will also use these functions.
(find_unwind_entry): Remove prototype (moved to hppa-tdep.h).
(hppa_in_solib_call_trampoline, hppa_in_solib_return_trampoline)
(hppa_skip_trampoline_code): Move to hppa-hpux-tdep.c
(hppa_gdbarch_init): Remove gdbarch setting of
skip_trampoline_code, in_solib_call_trampoline and
in_solib_return_trampoline.
* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline)
(hppa64_hpux_in_solib_call_trampoline): New functions, split from
hppa_in_solib_call_trampoline.
(hppa_hpux_in_solib_return_trampoline, hppa_hpux_skip_trampoline_code):
Moved from hppa-tdep.c.
(hppa_hpux_init_abi): Set gdbarch for skip_trampoline_code,
in_solib_call_trampoline and in_solib_return_trampoline.
* Makefile.in (hppa-hpux-tdep.o): Add $(hppa_tdep_h).
* hppa-hpux-tdep.c (hppa-tdep.h): Include.
(hppa_hpux_som_init_abi): Set is_elf to 0.
(hppa_hpux_elf_init_abi): Set is_elf to 1.
* hppa-tdep.c (low_text_segment_address): Remove global.
(record_text_segment_lowaddr): Pass in low address as parameter. Use
section offset to calculate segment address.
(internalize_unwinds): Define low_text_segment_address as local and
pass to record_text_segment_lowaddr for ELF targets.
(hppa_gdbarch_init): Zero fill tdep structure.
(hppa_dump_tdep): Print tdep structure.
* hppa-tdep.h (gdbarch_tdep): Add is_elf member to tdep structure.
* hppa-tdep.c (hppa_pseudo_register_read): Define.
(hppa_gdbarch_init): Set pseudo_register_read.
* config/pa/tm-hppa.h (DEPRECATED_CLEAN_UP_REGISTER_VALUE): Remove.
* regcache.c (supply_register): Remove check for
DEPRECATED_CLEAN_UP_REGISTER_VALUE since we've removed the last user.