Index: alpha-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/alpha-tdep.c,v retrieving revision 1.13 diff -c -r1.13 alpha-tdep.c *** alpha-tdep.c 2002/01/19 00:09:15 1.13 --- alpha-tdep.c 2002/01/19 05:17:10 *************** *** 144,149 **** --- 144,154 ---- } *linked_proc_desc_table = NULL; + int + alpha_osf_in_sigtramp (CORE_ADDR pc, char *func_name) + { + return (func_name != NULL && STREQ ("__sigtramp", func_name)); + } /* Under GNU/Linux, signal handler invocations can be identified by the designated code sequence that is used to return from a signal *************** *** 283,288 **** --- 288,311 ---- return (NULL); return (register_names[regno]); } + + int + alpha_cannot_fetch_register (int regno) + { + return (regno == FP_REGNUM || regno == ZERO_REGNUM); + } + + int + alpha_cannot_store_register (int regno) + { + return (regno == FP_REGNUM || regno == ZERO_REGNUM); + } + + int + alpha_register_convertible (int regno) + { + return (regno >= FP0_REGNUM && regno <= FP0_REGNUM + 31); + } /* Guaranteed to set frame->saved_regs to some values (it never leaves it *************** *** 1408,1413 **** --- 1431,1443 ---- return 0; else return SYMBOL_VALUE_ADDRESS (sym) + 4; + } + + int + alpha_use_struct_convention (int gcc_p, struct type *type) + { + /* Structures are returned by ref in extra arg0. */ + return 1; } /* alpha_software_single_step() is called just before we want to resume Index: config/alpha/tm-alpha.h =================================================================== RCS file: /cvs/src/src/gdb/config/alpha/tm-alpha.h,v retrieving revision 1.9 diff -c -r1.9 tm-alpha.h *** tm-alpha.h 2002/01/19 00:09:16 1.9 --- tm-alpha.h 2002/01/19 05:17:11 *************** *** 1,6 **** /* Definitions to make GDB run on an Alpha box under OSF1. This is also used by the Alpha/Netware and Alpha/Linux targets. ! Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of GDB. --- 1,6 ---- /* Definitions to make GDB run on an Alpha box under OSF1. This is also used by the Alpha/Netware and Alpha/Linux targets. ! Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. This file is part of GDB. *************** *** 73,83 **** /* Are we currently handling a signal ? */ ! #define IN_SIGTRAMP(pc, name) ((name) && STREQ ("__sigtramp", (name))) /* Stack grows downward. */ ! #define INNER_THAN(lhs,rhs) ((lhs) < (rhs)) #define BREAKPOINT {0x80, 0, 0, 0} /* call_pal bpt */ --- 73,84 ---- /* Are we currently handling a signal ? */ ! #define IN_SIGTRAMP(pc, name) alpha_osf_in_sigtramp ((pc), (name)) ! extern int alpha_osf_in_sigtramp (CORE_ADDR, char *); /* Stack grows downward. */ ! #define INNER_THAN(lhs,rhs) core_addr_lessthan ((lhs), (rhs)) #define BREAKPOINT {0x80, 0, 0, 0} /* call_pal bpt */ *************** *** 129,137 **** #define FP_REGNUM 65 /* Virtual frame pointer */ #define CANNOT_FETCH_REGISTER(regno) \ ! ((regno) == FP_REGNUM || (regno) == ZERO_REGNUM) #define CANNOT_STORE_REGISTER(regno) \ ! ((regno) == FP_REGNUM || (regno) == ZERO_REGNUM) /* Total amount of space needed to store our copies of the machine's register state, the array `registers'. */ --- 130,141 ---- #define FP_REGNUM 65 /* Virtual frame pointer */ #define CANNOT_FETCH_REGISTER(regno) \ ! alpha_cannot_fetch_register ((regno)) ! extern int alpha_cannot_fetch_register (int); ! #define CANNOT_STORE_REGISTER(regno) \ ! alpha_cannot_store_register ((regno)) ! extern int alpha_cannot_store_register (int); /* Total amount of space needed to store our copies of the machine's register state, the array `registers'. */ *************** *** 169,175 **** memory format is an integer with 4 bytes or less, as the representation of integers in floating point registers is different. */ ! #define REGISTER_CONVERTIBLE(N) ((N) >= FP0_REGNUM && (N) < FP0_REGNUM + 31) /* Convert data from raw format for register REGNUM in buffer FROM to virtual format with type TYPE in buffer TO. */ --- 173,180 ---- memory format is an integer with 4 bytes or less, as the representation of integers in floating point registers is different. */ ! #define REGISTER_CONVERTIBLE(N) alpha_register_convertible ((N)) ! extern int alpha_register_convertible (int); /* Convert data from raw format for register REGNUM in buffer FROM to virtual format with type TYPE in buffer TO. */ *************** *** 228,234 **** REGISTER_RAW_SIZE (V0_REGNUM))) /* Structures are returned by ref in extra arg0 */ ! #define USE_STRUCT_CONVENTION(gcc_p, type) 1 /* Describe the pointer in each stack frame to the previous stack frame --- 233,241 ---- REGISTER_RAW_SIZE (V0_REGNUM))) /* Structures are returned by ref in extra arg0 */ ! #define USE_STRUCT_CONVENTION(gcc_p, type) \ ! alpha_use_struct_convention ((gcc_p), (type)) ! extern int alpha_use_struct_convention (int, struct type *); /* Describe the pointer in each stack frame to the previous stack frame *************** *** 237,243 **** /* FRAME_CHAIN takes a frame's nominal address and produces the frame's chain-pointer. */ ! #define FRAME_CHAIN(thisframe) (CORE_ADDR) alpha_frame_chain (thisframe) extern CORE_ADDR alpha_frame_chain (struct frame_info *); /* Define other aspects of the stack frame. */ --- 244,250 ---- /* FRAME_CHAIN takes a frame's nominal address and produces the frame's chain-pointer. */ ! #define FRAME_CHAIN(thisframe) alpha_frame_chain (thisframe) extern CORE_ADDR alpha_frame_chain (struct frame_info *); /* Define other aspects of the stack frame. */