diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bc4b4fbde4..15f5b59b00 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,19 @@ +2002-01-18 Jason Thorpe + + * alpha-tdep.c (alpha_osf_in_sigtramp): New function. + (alpha_cannot_fetch_register): Ditto. + (alpha_cannot_store_register): Ditto. + (alpha_register_convertible): Ditto. + (alpha_use_struct_convention): Ditto. + * config/alpha/tm-alpha.h: Update copyright years. + (IN_SIGTRAMP): Use alpha_osf_in_sigtramp. + (INNER_THAN): Use core_addr_lessthan. + (CANNOT_FETCH_REGISTER): Use alpha_cannot_fetch_register. + (CANNOT_STORE_REGISTER): Use alpha_cannot_store_register. + (REGISTER_CONVERTIBLE): Use alpha_register_convertible. + (USE_STRUCT_CONVENTION): Use alpha_use_struct_convention. + (FRAME_CHAIN): Remove unnecessary cast. + 2002-01-18 Andrew Cagney * NEWS: Document that testsuite/gdb.hp/gdb.threads-hp/ is diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index 0ec3add597..a50000ede8 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -144,6 +144,11 @@ struct linked_proc_info } *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,6 +288,24 @@ alpha_register_name (int regno) 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 @@ -1410,6 +1433,13 @@ alpha_call_dummy_address (void) 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 the inferior, if we want to single-step it but there is no hardware or kernel single-step support (NetBSD on Alpha, for example). We find diff --git a/gdb/config/alpha/tm-alpha.h b/gdb/config/alpha/tm-alpha.h index ad2e39be24..7630e0887b 100644 --- a/gdb/config/alpha/tm-alpha.h +++ b/gdb/config/alpha/tm-alpha.h @@ -1,6 +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 + Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. This file is part of GDB. @@ -73,11 +73,12 @@ extern CORE_ADDR alpha_saved_pc_after_call (struct frame_info *); /* Are we currently handling a signal ? */ -#define IN_SIGTRAMP(pc, name) ((name) && STREQ ("__sigtramp", (name))) +#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) ((lhs) < (rhs)) +#define INNER_THAN(lhs,rhs) core_addr_lessthan ((lhs), (rhs)) #define BREAKPOINT {0x80, 0, 0, 0} /* call_pal bpt */ @@ -129,9 +130,12 @@ extern char *alpha_register_name (int); #define FP_REGNUM 65 /* Virtual frame pointer */ #define CANNOT_FETCH_REGISTER(regno) \ - ((regno) == FP_REGNUM || (regno) == ZERO_REGNUM) + alpha_cannot_fetch_register ((regno)) +extern int alpha_cannot_fetch_register (int); + #define CANNOT_STORE_REGISTER(regno) \ - ((regno) == FP_REGNUM || (regno) == ZERO_REGNUM) + 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,7 +173,8 @@ extern char *alpha_register_name (int); 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) +#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,7 +233,9 @@ extern void alpha_store_return_value (struct type *, char *); REGISTER_RAW_SIZE (V0_REGNUM))) /* Structures are returned by ref in extra arg0 */ -#define USE_STRUCT_CONVENTION(gcc_p, type) 1 +#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,7 +244,7 @@ extern void alpha_store_return_value (struct type *, char *); /* 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) +#define FRAME_CHAIN(thisframe) alpha_frame_chain (thisframe) extern CORE_ADDR alpha_frame_chain (struct frame_info *); /* Define other aspects of the stack frame. */