aboutsummaryrefslogtreecommitdiff
path: root/gdb/hppa-tdep.c
AgeCommit message (Collapse)AuthorFilesLines
1994-12-30 * hppa-tdep.c (pa_print_registers): Extract register values storedRob Savoye1-12/+32
in big endian format on big and little endian hosts.
1994-12-29 * hppa-tdep.c (hppa_fix_call_dummy): Prefer import stubs overJeff Law1-15/+54
export stubs and actual shared library functions so that lazy binding works correctly. Try both __d_plt_call and __gcc_plt_call trampolines for calling import stubs.
1994-12-28 * hppa-tdep.c (push_dummy_frame): Refine code to determine whatJeff Law1-4/+19
space ID to place in the stack & inf_status structure. (hppa_pop_frame): Don't walk through trampoline code if popping a call dummy frame. (hppa_fix_call_dummy): Call the stack dummy directly if the current PC is in a shared library.
1994-12-28 * hppa-tdep.c (push_dummy_frame): Return type is void. ClearJeff Law1-12/+47
in_syscall bit in flags. Don't depend on the PC queue registers when in_syscall is set, they're not valid. * config/pa/tm-hppa.h (PUSH_DUMMY_FRAME): Pass inf_status down to push_dummy_frame. (SR4_REGNUM): Define. * hppa-tdep.c: Misc. lint changes.
1994-12-07 * hppa-tdep.c: Use GDB_TARGET_IS_PA_ELF so SOM target support willRob Savoye1-0/+2
stop being linked in. * config/pa/tm-hppap.h: New file. Set GDB_TARGET_IS_PA_ELF, otherwise it looks like BSD-ELF.
1994-12-01 * somsolib.c (som_solib_get_got_by_pc): New function.Jeff Law1-0/+13
* somsolib.h (som_solib_get_got_by_pc): Add extern decl. * hppa-tdep.c (hppa_fix_call_dummy): Handle case where FUN is the function's export stub or real address in a shared library.
1994-11-26 * tm-hppa.h (skip_trampoline_code): Add extern decl.Jeff Law1-42/+48
* hppa-tdep.c (hppa_pop_frame): Silently restart the inferior and allow it to execute any return path trampoline code. Stop the inferior and give the user control when the trampoline has finished executing. (in_solib_call_trampoline): Handle export stubs which also perform parameter relocations. (in_solib_return_trampoline): Likewise.
1994-11-25 * hppa-tdep.c (in_solib_call_trampoline): Recognize calls throughJeff Law1-27/+129
_sr4export and $$dyncall as trampolines. Likewise for long-call stubs and parameter relocation stubs. (in_solib_return_trampoline): Recognize a return trampoline for return value relocation stubs.
1994-11-25 * hpread.c: Include hp-symtab.h instead of hpux-symtab.h.Jeff Law1-2/+0
Various name changes to match those used by hp-symtab.h. No longer sanitize away hpread changes. Merge ChangeLog.hpread into ChangeLog and ChangeLog-93.
1994-11-24 * blockframe.c (find_pc_partial_function): Inhibit mst_trampolineJeff Law1-0/+80
symbol special handling when INHIBIT_SUNSOLIB_TRANSFER_TABLE_HACK is defined. * infrun.c (IN_SOLIB_CALL_TRAMPOLINE): Renamed from IN_SOLIB_TRAMPOLINE. All callers changed. (IN_SOLIB_RETURN_TRAMPOLINE): Provide default definition. (wait_for_inferior): Handle single stepping through trampolines on return paths from shared libraries. * config/pa/tm-hppa.h (IN_SOLIB_CALL_TRAMPOLINE): Use in_solib_call_trampoline. (IN_SOLIB_RETURN_TRAMPOLINE): Use in_solib_return_trampoline. (INHIBIT_SUNSOLIB_TRANSFER_TABLE_HACK): Define. * hppa-tdep.c (in_solib_call_trampoline): New function. (in_solib_return_trampoline): New function.
1994-11-16 * hppa-tdep.c: Remove including sys/dir.h from a target file.Rob Savoye1-1/+0
1994-11-16 * hppa-tdep.c (skip_trampoline_code): Handle shared library importJeff Law1-0/+39
trampolines.
1994-11-11 * hppa-tdep.c (rp_saved): Handle IMPORT stubs too.Jeff Law1-0/+1
* somsolib.c (som_solib_add): Check the value of __dld_flags, if it indicates __dld_list is not valid return an error. If it indicates that libraries were not mapped privately, issue a warning.
1994-11-08 * hppa-tdep.c (read_unwind_info): Use "text_offset" for linkerJeff Law1-0/+1
stub unwind descriptors too.
1994-11-08 * Enable backtracing from inside a SOM shared library back intoJeff Law1-4/+9
user code. * hppa-tdep.c (internalize_unwinds): Accept and use new "text_offset" argument for dynamic relocation of region_{start,end} fields in the unwind descriptor. (read_unwind_info): Pass text_offset to internalize unwinds.
1994-11-06 * hppa-tdep.c (frame_saved_pc): Mask off low two bits whenJeff Law1-4/+22
retrieving the PC from a signal handler caller. Fix thinko in Stan's last change ("frame", should have been "frame->next"). If the next frame is a signal handler caller and it's a system call which has entered the kernel ((PSW & 0x2) != 0), then the saved pc is in %r2 instead of %r31.
1994-11-05 * hppa-tdep.c (hppa_frame_find_saved_regs): Change "frame" toJeff Law1-19/+19
"frame_info" throughout.
1994-11-04 Replace useless FRAME, FRAME_ADDR types with struct frame_info *Stan Shebs1-48/+52
and CORE_ADDR, respectively. * frame.h (FRAME, FRAME_INFO_ID, FRAME_ADDR): Remove. * blockframe.c (get_frame_info): Remove. * a29k-tdep.c, alpha-tdep.c, blockframe.c, breakpoint.c, breakpoint.h, energize.c, findvar.c, gdbtk.c, gould-pinsn.c, h8300-tdep.c, h8500-tdep.c, hppa-tdep.c, i386-tdep.c, i960-tdep.c, infcmd.c, inferior.h, infrun.c, m68k-tdep.c, m88k-tdep.c, mips-tdep.c, nindy-tdep.c, printcmd.c, pyr-tdep.c, rs6000-tdep.c, sh-tdep.c, sparc-tdep.c, stack.c, valops.c, z8k-tdep.c, config/a29k/tm-a29k.h, config/alpha/tm-alpha.h, config/gould/tm-pn.h, config/h8300/tm-h8300.h, config/h8500/tm-h8500.h, config/mips/tm-mips.h, config/ns32k/tm-merlin.h, config/ns32k/tm-umax.h, config/pyr/tm-pyr.h, config/sparc/tm-sparc.h): Replace FRAME with struct frame_info * everywhere, replace FRAME_ADDR with CORE_ADDR, rename variables consistently (using `frame' or `fi'), remove calls to get_frame_info and FRAME_INFO_ID, remove comments about FRAME and FRAME_ADDR cruftiness.
1994-10-20 * hppa-tdep.c: Remove include files a.out.h, ioctl.h, andRob Savoye1-3/+0
machine/psl.h. These are host files.
1994-10-08 The point of these changes is to avoid reading the frame pointerJim Kingdon1-2/+0
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.
1994-09-26 * hppa-tdep.c (frame_saved_pc): Fix thinko in code to dig saved pcJeff Law1-2/+2
out of an interrupt frame.
1994-08-19 * Makefile.in (ALLDEPFILES): Add hpread.c.Jeff Law1-0/+21
(hpread.o): Add dependencies. * somread.c: Do not include "aout/aout64.h". SOM has nothing to do with a.out. (BYTES_IN_WORD): Delete. (som_symfile_read): Call hpread_build_psymtabs to build any minimal symbols based on the HP C native debug symbols. (som_symfile_finish): Call hpread_symfile_finish. (som_symfile_init): Call hpread_symfile_init. * config/pa/tm-hppa.h (HPREAD_ADJUST_STACK_ADDRESS): Define. * hppa-tdep.c (hpread_adjust_stack_address): New function. * config/pa/hppabsd.mh (NATDEPFILES): Add hpread.o * config/pa/hppahpux.mh (NATDEPFILES): Likewise. * hpread.c: New file.
1994-08-19 * hppa-tdep.c (skip_trampoline_code): Revert incorrect changeJeff Law1-1/+1
from June 2, 1994 (what was I thinking?!?). Fix it right this time.
1994-08-01 * hppa-tdep.c (compare_unwind_entries): Add "const" to bothJeff Law1-4/+4
argument types to shut up GCC.
1994-08-01 * hppa-tdep.c (saved_pc_after_call): If the saved PC is in aJeff Law1-16/+135
linker stub, then return the address the stub will return to. (frame_saved_pc): Correctly restart the search for the saved pc when a linker stub is encountered. * hppa-tdep.c (inst_saves_gr): Handle 16 and 8 bit instruction register stores emitted by the version 9 HP compilers. (inst_saves_fr): Relax test for a specific base register (%r1); this avoids losing with the version 9 HP compilers. (skip_prologue): Try to skip argument stores emitted by the HP compilers. It's not perfect, but it's better than before.
1994-07-23 * Makefile.in: Add stuff to build nlmstub.Stu Grossman1-1/+1
* Add rule for annotate.o to keep Sun make happy. * configure.in: Add config for powerpc/Netware. * partial-stab.h (near N_SO): Don't call START_PSYMTAB with null filename. This speeds up handling of trailing N_SO stabs (they mark the end of a .o file). * target.c, target.h: Change the way pushing and popping of targets work to support target overlays and inheritance. * corelow.c, hppa-tdep.c, inflow.c, remote-nindy.c, utils.c: Fixup references to current_target, due to previous changes. * config/i386/tm-i386nw.h: Enable longjmp support. More work is needed to get the address of longjmp out of the target.
1994-07-05 * hppa-tdep.c (read_unwind_info): ELF unwind information is in theJeff Law1-1/+1
.PARISC.unwind section now.
1994-06-10 * hppa-tdep.c (target_read_pc, target_write_pc): Accept (andJeff Law1-3/+5
ignore) a PID argument. (hppa_pop_frame): Pass a PID to target_write_pc. * config/pa/tm-hppa.h (TARGET_READ_PC, TARGET_WRITE_PC): Accept and pass through a PID argument. (target_read_pc, target_write_pc): Update prototypes.
1994-06-03 * hppa-tdep.c (skip_trampoline_code): Fix typo.Jeff Law1-1/+1
1994-05-12 * hppa-tdep.c (read_unwind_info): Make sure elf_unwind_size andJeff Law1-0/+5
elf_unwind_entries are always initialized.
1994-05-12 * hppa-tdep.c (skip_trampoline_code): Handle argument relocationJeff Law1-3/+4
stubs which return directly to the caller rather than to the stub itself.
1994-04-19 * hppa-tdep.c (internalize_unwind_info): Delete unused indexpJeff Law1-3/+2
argument.
1994-04-18 * nm-hppab.h (KERNEL_U_ADDR): Define.Jeff Law1-2/+2
(FIVE_ARG_PTRACE): Likewise. (CANNOT_STORE_REGISTER): Likewise. nm-hppah.h (KERNEL_U_ADDR): Define. (FIVE_ARG_PTRACE): Likewise. (CANNOT_STORE_REGISTER): Likewise. (NEED_TEXT_START_END): Likewise. * tm-hppah.h (NEED_TEXT_START_END): Delete definition. * xm-hppah.h (KERNEL_U_ADDR): Delete definition. (FIVE_ARG_PTRACE): Likewise. * xm-hppab.h (KERNEL_U_ADDR): Delete definition. (FIVE_ARG_PTRACE): Likewise. * hppa-tdep.c (read_unwind_info): Make static. (restore_pc_queue): Indirect through the target vector to reload the register state.
1994-04-17 * paread.c (compare_unwind_entries): Delete function. It's beenJeff Law1-1/+205
moved into hppa-tdep.c. (read_unwind_info): Likewise. (pa_symfile_read): No longer call read_unwind_info. The unwind tables will be read in as they are needed. * hppa-tdep.c (compare_unwind_entries): New function. (read_unwind_info, internalize_unwinds): Likewise. (find_unwind_entry): Read in unwind information on demand.
1994-04-06 * hppa-tdep.c (hppa_fix_call_dummy): If FUN is a procedure label,Jeff Law1-0/+14
then gets its real address into FUN and its GOT/DP value into %r19. * tm-hppa.h (CALL_DUMMY): Use %r20, not %r19 as a temporary.
1994-04-06 * hppa-tdep.c (frameless_function_invocation): If no unwindJeff Law1-8/+18
descriptor was found, then assume this was not a frameless function invocation. (frame_saved_pc): If the saved PC is in a linker stub, then return the return address which the linker stub will return to.
1994-03-30 * hppa-tdep.c (hppa_fix_call_dummy): Use an alternate method forJeff Law1-0/+30
calling import stubs for functions in shared libraries.
1994-03-26 * hppa-tdep.c (skip_prologue): Do nothing if not at the beginningJeff Law1-18/+129
of a function. (skip_trampoline_code): Rewrite and add support for argument relocation stubs stubs, import/export stubs, calls through "_sr4export" and cascaded trampolines.
1994-03-25 * hppa-tdep.c (skip_prologue): Return "pc" not zeroJeff Law1-1/+1
if no unwind descriptor is found.
1994-03-25 * tm-hppa.h (NUM_REGS): Bump to 128 registers.Jeff Law1-13/+26
(REGISTER_NAMES): Add entries for "right-half" of FP registers. (REGISTER_RAW_SIZE, MAX_REGISTER_RAW_SIZE): Do not treat FP regs differently. All registers are four bytes. (REGISTER_BYTES, REGISTER_BYTE): Simplify now that all registers are the same size. (REGISTER_VIRTUAL_TYPE): Use builtin_type_float for all FP regs. * hppa-tdep.c (pa_print_fp_reg): Update to print even numbered FP registers as both single and double values (fetching 2nd 32bit half as necessary). Annotate each register printed with its precision.
1994-03-23 * config/pa/tm-hppao.h (NO_PC_SPACE_QUEUE_RESTORE): Define.Jeff Law1-0/+2
* hppa-tdep.c (hppa_pop_frame): Do not restore the PC space queue if NO_PC_SPACE_QUEUE_RESTORE is defined.
1994-03-21 * hppa-tdep.c (hppa_fix_call_dummy): Use value_ptr.Jeff Law1-2/+2
(hppa_push_arguments): Likewise.
1994-03-04 * hppa-tdep.c (pc_in_linker_stub): Move decl to beginning of file.Jeff Law1-21/+152
(pc_in_interrupt_handler): New function. Also add PARAM decl. (find_proc_framesize): Deal with HPUX setting SAVE_SP bit for signal trampoline and interrupt routines. (frame_saved_pc): Handle signal trampolines and interrupt routines. (frame_chain, frame_chain_valid): Likewise. (hppa_frame_find_saved_regs): Likewise. Also deal with special saved regs convention for SP. * tm-hppa[bho].h: FRAME_FIND_SAVED_PC_IN_SIGTRAMP): Define. (FRAME_BASE_BEFORE_SIGTRAMP): Define. (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): Define. * tm-hppah.h (IN_SIGTRAMP): Define.
1994-01-18 * config/pa/tm-hppa.h (unwind_table_entry): Use one of theJeff Law1-2/+14
reserved fields to hold a stub unwind entry type. Fix typo. (stub_unwind_entry): New structure for raw stub unwind entries. (stub_unwind_types): The types of stubs we may encounter. (UNWIND_ENTRY_SIZE, STUB_UNWIND_ENTRY_SIZE): New defines. * hppa-tdep.c (rp_saved): Use additional information provided by linker stub unwind descriptors. (frameless_function_invocation): Likewise. (frame_chain_valid): Likewise. * paread.c (compare_unwind_entries): New function for sorting unwind table entries. (read_unwind_info): Rewrite to remove dependency on host endianness. Read in data from the $UNWIND_END$ subspace which contains linker stub unwind descriptors. Merge that data into the basic unwind table.
1994-01-11 * config/pa/tm-hppa.h (FRAME_FIND_SAVED_REGS): CallJeff Law1-67/+370
hppa_frame_find_saved_regs. * hppa-tdep.c (dig_fp_from_stack): Delete function. (prologue_inst_adjust_sp): New function. (is_branch, inst_saves_gr, inst_saves_fr): New functions. (skip_prologue): Completely rewrite to use unwind information. (hppa_frame_find_saved_regs): Likewise.
1994-01-04 * target.h: Add enum target_waitkind, enum target_signal, andJim Kingdon1-6/+7
struct target_waitstatus. Change status argument to target_wait to be struct target_waitstatus * instead of int *. * target.h, infrun.c, all targets: Change type of signal arguments to resume(), proceed(), and target_resume() from int to enum target_signal. * All targets (*_wait, *_resume): Change accordingly. * infcmd.c (program_info, signal_command), throughout infrun.c, * fork-child.c, solib.c, hppa-tdep.c, osfsolib.c: Use this stuff. * convex-xdep.c, convex-tdep.c: Add FIXME's (getting the Convex signal code stuff right with the new signals would be non-trivial). * inferior.h (stop_signal): Make it enum target_signal not int. * target.c, target.h (target_signal_to_string, target_signal_to_name, target_signal_from_name): New functions. * inftarg.c, target.h (target_signal_to_host, target_signal_from_host, store_waitstatus): New functions. * procfs.c (procfs_notice_signals): Use them. * i960-tdep.c (i960_fault_to_signal): New function, to replace print_fault. * config/i960/tm-i960.h: Don't define PRINT_RANDOM_SIGNAL.
1993-12-27 * dbxread.c (process_one_symbol): Handle stabs-in-som just likeJeff Law1-18/+18
stabs-in-elf. (pastab_build_psymtabs): Likewise. * hppa-tdep.c: Change all comments to reference %r3 or frame pointer rather than %r4. (frame_chain, skip_prologue, dig_rp_from_stack): Handle %r3 as the frame pointer. * config/pa/tm-hppa.h (FP_REGNUM): Define as %r3. (FIND_FRAME_SAVED_REGS): Handle %r3 as frame pointer. (CALL_DUMMY): Likewise.
1993-12-26 * valops.c (call_function_by_hand, push_word), defs.h (push_word),Jim Kingdon1-6/+25
convex-xdep.c, m88k-nat.c, i386m3-nat.c, mips-tdep.c, mipsm3-nat.c, ns32km3-nat.c, remote-bug.c, m88k-tdep.c, remote-hms.c, remote-mips.c, config/gould/tm-np1.h, hppa-tdep.c (hppa_fix_call_dummy), remote-vx.c: Use REGISTER_SIZE, unsigned LONGEST, and {store,extract}_unsigned_integer, instead of sizeof (REGISTER_TYPE) and REGISTER_TYPE. * All tm.h files: Change REGISTER_TYPE to REGISTER_SIZE. * hppa-tdep.c (pa_print_fp_reg): Remove unused variable val. * Makefile.in (ALLDEPFILES): Remove i386ly-nat.c and m68kly-nat.c. Add lynx-nat.c.
1993-12-26 * hppa-tdep.c (init_extra_frame_info): Correctly adjust the baseJeff Law1-10/+30
of the current frame when "fromleaf" is true. Do not adjust the frame base of the innermost frame if it is a leaf function.
1993-11-02 * findvar.c (value_of_register, value_from_register),Peter Schauer1-2/+13
hppa-tdep.c (pa_print_fp_reg), infcmd.c (do_registers_info), valops.c (value_assign): Use REGISTER_CONVERT_TO_* only if REGISTER_CONVERTIBLE is defined, otherwise just copy the content. Pass desired type to REGISTER_CONVERT_TO_*. * config/m68k/tm-m68k.h, config/i960/tm-i960.h (REGISTER_CONVERT_*): Pass length of desired type to store/extract_floating. * config/i386/tm-arm.h, config/i386/tm-i386aix.h, config/i386/tm-sun386.h, config/i386/tm-symmetry.h, config/m88k/tm-m88k.h config/rs6000/tm-rs6000.h (REGISTER_CONVERT_*): Use extract_floating and store_floating with length of desired type. * config/m68k/tm-news.h (STORE,EXTRACT_RETURN_VALUE): Add type parameter to REGISTER_CONVERT_*. * config/a29k/tm-a29k.h, config/convex/tm-convex.h, config/gould/tm-np1.h, config/gould/tm-pn.h, config/h8300/tm-h8300.h, config/h8500/tm-h8500.h, config/i386/tm-i386v.h, config/mips/tm-mips.h, config/ns32k/tm-merlin.h, config/ns32k/tm-umax.h, config/pa/tm-hppa.h, config/pyr/tm-pyr.h, config/sh/tm-sh.h, config/sparc/tm-sparc.h, config/tahoe/tm-tahoe.h, config/vax/tm-vax.h, config/z8k/tm-z8k.h (REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_RAW, REGISTER_CONVERT_TO_VIRTUAL): Remove versions for which REGISTER_CONVERTIBLE is always false. * z8k-tdep.c (register_convert_to_virtual, register_convert_to_raw): Remove, no longer used. * alpha-tdep.c (alpha_register_convert_to_raw, alpha_register_convert_to_virtual): New routines to handle the different raw formats in alpha floating point registers. * config/alpha/tm-alpha.h (REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL, REGISTER_CONVERT_TO_RAW): Use them.