Age | Commit message (Collapse) | Author | Files | Lines |
|
* 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.
|
|
* gdbarch.sh (PUSH_DUMMY_CALL): Change CORE_ADDR func_addr argument
to struct value *function.
* gdbarch.c: Regenerate.
* gdbarch.h: Likewise.
* infcall.c (call_function_by_hand): Pass entire function value
to push_dummy_call.
* Makefile.in (alpha-tdep.o, frv-tdep.o, ia64-tdep.o, mips-tdep.o)
(ppc-sysv-tdep.o, rs6000-tdep.o): Update dependencies.
* alpha-tdep.c (alpha_push_dummy_call): Update call signature.
* amd64-tdep.c (amd64_push_dummy_call): Likewise.
* arm-tdep.c (arm_push_dummy_call): Likewise.
* avr-tdep.c (avr_push_dummy_call): Likewise.
* cris-tdep.c (cris_push_dummy_call): Likewise.
* d10v-tdep.c (d10v_push_dummy_call): Likewise.
* frv-tdep.c (frv_push_dummy_call): Likewise.
* h8300-tdep.c (h8300_push_dummy_call): Likewise.
* hppa-tdep.c (hppa32_push_dummy_call)
(hppa64_push_dummy_call): Likewise.
* i386-tdep.c (i386_push_dummy_call): Likewise.
* ia64-tdep.c (ia64_push_dummy_call): Likewise.
* m32r-tdep.c (m32r_push_dummy_call): Likewise.
* m68hc11-tdep.c (m68hc11_push_dummy_call): Likewise.
* m68k-tdep.c (m68k_push_dummy_call): Likewise.
* m88k-tdep.c (m88k_push_dummy_call): Likewise.
* mips-tdep.c (mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call)
(mips_o32_push_dummy_call, mips_o64_push_dummy_call): Likewise.
* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call)
(ppc64_sysv_abi_push_dummy_call): Likewise.
* ppc-tdep.h (ppc_sysv_abi_push_dummy_call)
(ppc64_sysv_abi_push_dummy_call): Likewise.
* rs6000-tdep.c (rs6000_push_dummy_call): Likewise.
* s390-tdep.c (s390_push_dummy_call): Likewise.
* sh-tdep.c (sh_push_dummy_call_fpu)
(sh_push_dummy_call_nofpu): Likewise.
* sparc-tdep.c (sparc32_push_dummy_call): Likewise.
* sparc64-tdep.c (sparc64_push_dummy_call): Likewise.
* vax-tdep.c (vax_push_dummy_call): Likewise.
|
|
handle VALUEP being null.
|
|
* hppa-tdep.c (hppa_fallback_frame_cache): Handle stack adjustment,
and multiple stack unwinds.
(hppa_stub_unwind_sniffer): Handle unwind from pc == 0.
|
|
* 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: Fix handling of 8-byte structures; they should not
be "small_struct".
|
|
* hppa-tdep.c (hppa_frame_cache): Check for validity of r31 for
millicode functions.
|
|
* hppa-tdep.c (hppa_frame_cache): If a frame pointer is available, use
it for unwinding the stack.
|
|
* hppa-tdep.c (hppa_stub_frame_unwind_cache): Don't do export stub
handling for 64-bit HPUX (elf).
|
|
* 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: Remove superfluous #include's.
* Makefile.in (hppa-tdep.o): Update dependencies.
|
|
* hppa-tdep.c (THREAD_INITIAL_FRAME_SYMBOL): Delete unused symbol.
(THREAD_INITIAL_FRAME_SYM_LEN): Likewise.
(unwind_command, hppa_alignof, prologue_inst_adjust_sp)
(is_branch, inst_saves_gr, inst_saves_fr, compare_unwind_entries)
(read_unwind_info, internalize_unwinds, record_text_segment_lowaddr):
Remove static function declarations.
|
|
* hppa-tdep.c (skip_prologue_hard_way, hppa_frame_cache): Use
read_memory_nobpt for code reading when doing frame unwinding.
* hppa-linux-tdep.c (insns_match_pattern): Likewise.
|
|
* 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.
|
|
* config/pa/tm-hppa.h (RO_REGNUM, FLAGS_REGNUM, RP_REGNUM)
(HPPA_FP_REGNUM, HPPA_SP_REGNUM, SAR_REGNUM, IPSW_REGNUM)
(PCOQ_HEAD_REGNUM, PCSQ_HEAD_REGNUM, PCOQ_TAIL_REGNUM, PCSQ_TAIL_REGNUM)
(EIEM_REGNUM, IIR_REGNUM, ISR_REGNUM, IOR_REGNUM, SR4_REGNUM)
(RCR_REGNUM, PID0_REGNUM, PID1_REGNUM, PID2_REGNUM, PID3_REGNUM)
(CCR_REGNUM, TR0_REGNUM, CR27_REGNUM, HPPA_FP0_REGNUM, FP4_REGNUM)
(ARG0_REGNUM, ARG1_REGNUM, ARG2_REGNUM, ARG3_REGNUM): Move *_REGNUM
definitions ...
* hppa-tdep.h: ... to here, with HPPA_ prefix.
* Makefile.in (hppah-nat.o): Add $(hppa_tdep_h)
* hppa-hpux-tdep.c (hppa32_hpux_frame_find_saved_regs_in_sig)
(hppa64_hpux_frame_find_saved_regs_in_sig)
(child_get_current_exception_event): Add HPPA_ prefix to *_REGNUM usage.
* hppa-linux-nat.c (GR_REGNUM, TR_REGNUM, greg_map): Likewise.
* hppa-linux-tdep.c (hppa_dwarf_reg_to_regnum)
(hppa_linux_target_write_pc, hppa_linux_sigtramp_frame_unwind_cache)
(hppa_linux_sigtramp_frame_prev_register): Likewise.
* hppa-tdep.c (hppa32_return_value, hppa64_return_value)
(hppa32_push_dummy_call, hppa64_push_dummy_call, hppa64_frame_align)
(hppa_target_read_pc, hppa_target_write_pc, hppa_frame_cache)
(hppa_frame_prev_register, hppa_stub_frame_unwind_cache)
(hppa_stub_frame_prev_register, hppa_unwind_dummy_id)
(hppa_skip_permanent_breakpoint, hppa_instruction_nullified)
(hppa32_register_type, hppa_cannot_store_register)
(hppa_fetch_pointer_argument, hppa_pseudo_register_read): Likewise.
* hppah-nat.c (store_inferior_registers, fetch_register): Likewise.
* hpread.c (hpread_process_one_debug_symbol): Likewise.
* pa64solib.c (pa64_solib_have_load_event)
(pa64_solib_have_unload_event, pa64_solib_loaded_library_pathname)
(pa64_solib_unloaded_library_pathname): Likewise.
* somsolib.c (som_solib_have_load_event, som_solib_have_unload_event)
(som_solib_library_pathname): Likewise.
|
|
* 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.c (hppa_frame_cache): Handle the case when frame unwind
starts at a pc before the frame is created.
|
|
* 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.
|
|
* hppa-tdep.c (hppa_debug): New variable.
(find_unwind_entry, hppa_frame_cache): Add debug output.
(_initialize_hppa_tdep): Add command to set debug flag.
|
|
* 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.
|
|
* Makefile.in (hpread.o, pa64solib.o, somsolib.o): Add $(hppa_tdep_h)
* hppa-tdep.c (hppa_objfile_priv_data): New.
(SR4EXPORT_LDIL_OFFSET, SR4EXPORT_LDO_OFFSET): Use
HPPA_INSTRUCTION_SIZE.
(read_unwind_info): Use objfile_data to reference unwind info.
(find_unwind_entry): Likewise.
(hpread_adjust_stack_address): Move to hpread.c.
(_initialize_hppa_tdep): Register hppa objfile data.
* hppa-tdep.h (HPPA_INSTRUCTION_SIZE): Define.
(unwind_table_entry, unwind_stub_types): Move from tm-hppa.h.
(obj_unwind_info, obj_private_struct): Move from tm-hppa.h, and rename
with hppa_ prefix.
* hpread.c (hppa-tdep.h): Include.
(hpread_adjust_stack_address): Move from hppa-tdep.c.
(hpread_read_function_type, hpread_read_doc_function_type)
(hpread_process_one_debug_symbol): Call hpread_adjust_stack_address
directly. Use objfile_data to access solib data.
* pa64solib.c (hppa-tdep.h): Include.
(pa64_solib_add_solib_objfile): Use objfile_data to access solib data.
* somsolib.c (hppa-tdep.h): Include.
(som_solib_add_solib_objfile): Use objfile_data to access solib data.
* config/pa/tm-hppa.h (frame_info, frame_saved_regs, value, type)
(inferior_status): Remove unused forward declarations.
(INSTRUCTION_SIZE): Move to hppa-tdep.c.
(unwind_table_entry, unwind_stub_types, obj_unwind_info)
(obj_private_struct): Move to hppa-tdep.h.
(HPREAD_ADJUST_STACK_ADDRESS): Remove.
|
|
* hppa-tdep.c (hppa_reg_struct_has_addr, hppa_skip_prologue)
(hppa_skip_trampoline_code, hppa_in_solib_call_trampoline)
(hppa_in_solib_return_trampoline, hppa_cannot_store_register)
(hppa_smash_text_address, hppa_target_read_pc, hppa_target_write_pc):
Remove forward declaration and make static.
(hppa_reg_struct_has_addr): Remove.
|
|
* hppa-tdep.c (hppa_inner_than): Remove.
(is_pa_2): Remove unused static variable.
(hppa_gdbarch_init): Use core_addr_greaterthan instead of own version.
|
|
* hppa-tdep.c (hppa_breakpoint_from_pc): Make static.
(hppa_gdbarch_init): Set gdbarch_breakpoint_from_pc
* config/pa/tm-hppa.h (BREAKPOINT_FROM_PC, BREAKPOINT32):
(hppa_breakpoint_from_pc): Delete.
|
|
* hppa-tdep.c: Do not include <sys/types.h>, <sys/param.h>,
<signal.h>, <sys/ptrace.h>, #include "a.out.encap.h",
<sys/file.h>.
|
|
Committed by Andrew Cagney (mechanical change).
* hppa-tdep.c: (args_for_find_stub, hp_som_som_object_present,
exception_catchpoints_are_fragile, find_stub_with_shl_get,
cover_find_stub_with_shl_get, initialize_hp_cxx_exception_support,
child_enable_exception_callback, current_ex_event,
null_symtab_and_line, child_get_current_exception_event,
HP_ACC_EH_notify_hook, HP_ACC_EH_set_hook_value,
HP_ACC_EH_notify_callback, HP_ACC_EH_break, HP_ACC_EH_catch_throw,
HP_ACC_EH_catch_catch, __eh_notification, hp_cxx_exception_support,
hp_cxx_exception_support_initialized, eh_notify_hook_addr,
eh_notify_callback_addr, eh_break_addr, eh_catch_catch_addr,
eh_catch_throw_addr, break_callback_sal, setup_d_pid_in_inferior):
Move hpux-specific definitions ...
* hppa-hpux-tdep.c: ... to here.
|
|
* hppa-tdep.c (hppa_frame_cache): Pass the frame's func to
skip_prologue_using_sal.
|
|
* config/pa/tm-hppa.h (REG_PARM_STACK_SPACE): Delete.
* config/pa/tm-hppa64.h (PA20W_CALLING_CONVENTIONS)
(REG_PARM_STACK_SPACE): Delete.
* hppa-tdep.c (hppa64_push_dummy_call, hppa32_push_dummy_call):
Inline reference to REG_PARM_STACK_SPACE.
|
|
(hppa64_push_dummy_call): Likewise.
|
|
* hppa-tdep.c: Replace DEPRECATED_FP_REGNUM with HPPA_FP_REGNUM,
FP0_REGNUM with HPPA_FP0_REGNUM, and SP_REGNUM with
HPPA_SP_REGNUM.
(hppa_register_raw_size, hppa_register_byte, hppa_read_fp)
(hppa_target_read_fp): Delete.
(hppa_gdbarch_init): Do not set deprecated register_raw_size,
register_virtual_size, max_register_raw_size,
max_register_virtual_size, register_byte, register_size,
target_read_fp, fp_regnum, and register_bytes. Set register_type
instead of register_virtual_type.
(hppa32_register_type, hppa64_register_type): Replace
hppa32_register_virtual_type and hppa64_register_virtual_type.
* config/pa/tm-hppa.h (HPPA_FP0_REGNUM, HPPA_SP_REGNUM)
(HPPA_FP_REGNUM): Define.
|
|
* hppa-tdep.c (hppa_gdbarch_init): Add missing "break".
|
|
* hppa-tdep.c (pa_do_registers_info, pa_do_strcat_registers_info)
(pa_print_registers, pa_print_fp_reg, pa_strcat_registers)
(pa_strcat_fp_reg, pa_register_look_aside): Delete.
* config/pa/tm-hppa.h (DEPRECATED_DO_REGISTERS_INFO)
(pa_do_registers_info): Delete.
|
|
* infcall.c (legacy_push_dummy_code): Delete #ifdef
GDB_TARGET_IS_HPPA code.
* config/pa/tm-hppa.h (DEPRECATED_FIX_CALL_DUMMY)
(hppa_fix_call_dummy, DEPRECATED_CALL_DUMMY_HAS_COMPLETED)
(DEPRECATED_DUMMY_WRITE_SP, CALL_DUMMY): Delete.
* config/pa/tm-hppa64.h (CALL_DUMMY): Delete.
* hppa-tdep.c (hppa_frame_chain, hppa_frame_chain_valid)
(hppa_push_dummy_frame, hppa_pop_frame, hppa_push_arguments)
(hppa_fix_call_dummy, hppa64_stack_align, hppa_frame_saved_pc)
(hppa_init_extra_frame_info, hppa_saved_pc_after_call)
(hppa64_call_dummy_breakpoint_offset, hppa_frame_init_saved_regs)
(hppa_frameless_function_invocation, hppa64_store_return_value)
(hppa_store_struct_return, hppa64_extract_return_value)
(hppa64_use_struct_convention, hppa_frame_find_saved_regs)
(hppa32_call_dummy_length, hppa64_call_dummy_length)
(find_dummy_frame_regs, FUNC_LDIL_OFFSET, FUNC_LDO_OFFSET)
(find_proc_framesize, deposit_21, restore_pc_queue)
(find_return_regnum, pc_in_interrupt_handler, deposit_14)
(rp_saved, pc_in_linker_stub):
|
|
Unconditionally enable 64-bit frame and ABI code.
* hppa-tdep.c (hppa_gdbarch_init): Do not set deprecated
call_dummy_breakpoint_offset, call_dummy_length, stack_align,
push_dummy_frame, fix_call_dummy, push_arguments,
call_dummy_location, extract_return_value, use_struct_convention,
store_return_value, store_struct_return, saved_pc_after_call,
init_frame_pc, frame_init_saved_regs, init_extra_frame_info,
frame_chain, frame_chain_valid, frameless_function_invocation,
frame_saved_pc, and pop_frame.
|
|
* hppa-tdep.c: Replace PC_REGNUM with PCOQ_HEAD_REGNUM.
(hppa64_return_value, hppa64_push_dummy_call): Rewrite.
(hppa_gdbarch_init): Do not set PC_REGNUM.
|
|
|
|
* hppa-tdep.c (hppa_gdbarch_init): On 32-bit systems always use
the new frame unwind code.
(hppa_frame_cache): Use PCOQ_HEAD_REGNUM instead of PC_REGNUM.
(hppa_frame_prev_register): Compute PCOQ_TAIL_REGNUM from
PCOQ_HEAD_REGNUM.
|
|
2004-02-27 Andrew Cagney <cagney@redhat.com>
* hppa-tdep.c (hppa_gdbarch_init): On 32-bit systems always
"return_value" and "push_dummy_call".
(hppa32_use_struct_convention): Delete unused function.
(hppa32_store_return_value): Delete unused function.
(hppa32_extract_return_value): Delete unused function.
(hppa32_stack_align): Delete function.
|
|
* hppa-tdep.c (hppa32_push_dummy_call): Fix code reserving
inferior stack space - the stack needs to grow upwards.
(hppa32_frame_align): New function.
(hppa64_frame_align): Replace hppa_frame_align.
(hppa_gdbarch_init): Update.
|
|
* hppa-tdep.c (hppa32_push_dummy_call): Rewrite.
|
|
* hppa-tdep.c (hppa_frame_align): New function.
(hppa32_push_dummy_call): New function.
(hppa64_push_dummy_call): New function.
(hppa_gdbarch_init): Set frame_align and push_dummy_call; keep
disabled.
|
|
* config/pa/tm-hppa.h (CALL_DUMMY_LOCATION): Delete macro.
(DEPRECATED_PC_IN_CALL_DUMMY): Delete macro.
(DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Delete macro.
* hppa-tdep.c (hppa_gdbarch_init): Clear deprecated
use_generic_dummy_frames, set deprecated pc_in_call_dummy, set
call_dummy_location to ON_STACK.
|
|
* hppa-tdep.c (hppa32_return_value): New function.
(hppa64_return_value): New function.
(hppa_gdbarch_init): Set return_value; keep disabled.
|
|
* hppa-tdep.c (hppa_gdbarch_init): Re-order separating
struct-return and inferior function call methods.
|
|
2004-02-22 Andrew Cagney <cagney@redhat.com>
* hppa-tdep.c: Include "trad-frame.h", "frame-unwind.h", and
"frame-base.h".
(struct hppa_frame_cache): Define.
(hppa_frame_cache, hppa_frame_this_id): New functions.
(hppa_frame_prev_register): New function.
(hppa_frame_unwind, hppa_frame_base): New variables.
(hppa_frame_unwind_sniffer): New function.
(hppa_frame_base_address, hppa_unwind_pc): New function.
(hppa_gdbarch_init): Set unwind_dummy_id, unwind_pc, frame unwind
sniffer, and frame base sniffer; keep disabled.
(hppa_frame_base_sniffer, hppa_unwind_dummy_id): New functions.
* Makefile.in: Update dependencies, fix s/nbsd/obsd/ typo.
|