ppc-macosx-frameinfo.h [plain text]
#ifndef __GDB_PPC_MACOSX_FRAMEINFO_H__
#define __GDB_PPC_MACOSX_FRAMEINFO_H__
#include "defs.h"
struct frame_info;
typedef struct ppc_function_boundaries_request ppc_function_boundaries_request;
typedef struct ppc_function_boundaries ppc_function_boundaries;
typedef struct ppc_function_properties ppc_function_properties;
struct ppc_function_boundaries_request
{
CORE_ADDR min_start;
CORE_ADDR max_end;
CORE_ADDR contains_pc;
CORE_ADDR prologue_start;
CORE_ADDR body_start;
CORE_ADDR epilogue_start;
CORE_ADDR function_end;
};
struct ppc_function_boundaries
{
CORE_ADDR prologue_start;
CORE_ADDR body_start;
CORE_ADDR epilogue_start;
CORE_ADDR function_end;
};
struct ppc_function_properties
{
int offset;
int saved_gpr;
int saved_fpr;
int gpr_offset;
int fpr_offset;
char frameless;
char frameptr_used;
int frameptr_reg;
CORE_ADDR frameptr_pc;
CORE_ADDR lr_saved;
int lr_offset;
CORE_ADDR lr_invalid;
CORE_ADDR lr_valid_again;
int lr_reg;
char cr_saved;
int cr_offset;
char minimal_toc_loaded;
int pic_base_reg;
CORE_ADDR pic_base_address;
};
struct ppc_frame_cache
{
CORE_ADDR stack;
CORE_ADDR frame;
CORE_ADDR pc;
CORE_ADDR prev_pc;
CORE_ADDR prev_sp;
CORE_ADDR *saved_regs;
int saved_regs_valid;
struct ppc_function_properties properties;
int properties_valid;
struct ppc_function_boundaries boundaries;
int boundaries_status;
};
void ppc_print_boundaries PARAMS ((struct ppc_function_boundaries *bounds));
void ppc_print_properties PARAMS ((struct ppc_function_properties *props));
CORE_ADDR ppc_parse_instructions PARAMS
((CORE_ADDR start, CORE_ADDR end, struct ppc_function_properties *props));
void ppc_clear_function_boundaries_request PARAMS ((struct ppc_function_boundaries_request *request));
void ppc_clear_function_boundaries PARAMS ((struct ppc_function_boundaries *boundaries));
void ppc_clear_function_properties PARAMS ((struct ppc_function_properties *properties));
int ppc_find_function_boundaries PARAMS
((struct ppc_function_boundaries_request *request,
struct ppc_function_boundaries *reply));
struct ppc_function_boundaries *
ppc_frame_function_boundaries (struct frame_info *frame, void **this_cache);
struct ppc_function_properties *
ppc_frame_function_properties (struct frame_info *frame, void **this_cache);
CORE_ADDR *
ppc_frame_saved_regs (struct frame_info *next_frame, void **this_cache);
int safe_read_memory_unsigned_integer (CORE_ADDR addr, int len, unsigned long *val);
#endif