aboutsummaryrefslogtreecommitdiff
path: root/gdb/ia64-tdep.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/ia64-tdep.h')
-rw-r--r--gdb/ia64-tdep.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/gdb/ia64-tdep.h b/gdb/ia64-tdep.h
index 384cb14..df0b4bb 100644
--- a/gdb/ia64-tdep.h
+++ b/gdb/ia64-tdep.h
@@ -196,6 +196,32 @@
#define IA64_NAT127_REGNUM (IA64_NAT0_REGNUM + 127)
struct frame_info;
+struct regcache;
+
+/* A struction containing pointers to all the target-dependent operations
+ performed to setup an inferior function call. */
+
+struct ia64_infcall_ops
+{
+ /* Allocate a new register stack frame starting after the output
+ region of the current frame. The new frame will contain SOF
+ registers, all in the output region. This is one way of protecting
+ the stacked registers of the current frame.
+
+ Should do nothing if this operation is not permitted by the OS. */
+ void (*allocate_new_rse_frame) (struct regcache *regcache, ULONGEST bsp,
+ int sof);
+
+ /* Store the argument stored in BUF into the appropriate location
+ given the BSP and the SLOTNUM. */
+ void (*store_argument_in_slot) (struct regcache *regcache, CORE_ADDR bsp,
+ int slotnum, gdb_byte *buf);
+
+ /* For targets where we cannot call the function directly, store
+ the address of the function we want to call at the location
+ expected by the calling sequence. */
+ void (*set_function_addr) (struct regcache *regcache, CORE_ADDR func_addr);
+};
struct gdbarch_tdep
{
@@ -209,8 +235,18 @@ struct gdbarch_tdep
extracting the lowest 7 bits ("cfm & 0x7f"). */
int (*size_of_register_frame) (struct frame_info *this_frame, ULONGEST cfm);
+ /* Determine the function address FADDR belongs to a shared library.
+ If it does, then return the associated global pointer. If no shared
+ library was found to contain that function, then return zero.
+
+ This pointer may be NULL. */
+ CORE_ADDR (*find_global_pointer_from_solib) (struct gdbarch *gdbarch,
+ CORE_ADDR faddr);
+
/* ISA-specific data types. */
struct type *ia64_ext_type;
+
+ struct ia64_infcall_ops infcall_ops;
};
extern void ia64_write_pc (struct regcache *, CORE_ADDR);