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 gpr_bitmap[32];
int fpr_bitmap[32];
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;
int sigtramp_gp_store_size;
struct ppc_function_properties properties;
int properties_valid;
struct ppc_function_boundaries boundaries;
int boundaries_status;
};
void ppc_print_boundaries (struct ppc_function_boundaries * bounds);
void ppc_print_properties (struct ppc_function_properties * props);
CORE_ADDR ppc_parse_instructions (CORE_ADDR start, CORE_ADDR end,
struct ppc_function_properties * props);
void ppc_clear_function_boundaries_request (struct ppc_function_boundaries_request * request);
void ppc_clear_function_boundaries (struct ppc_function_boundaries * boundaries);
void ppc_clear_function_properties (struct ppc_function_properties * properties);
int ppc_find_function_boundaries (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);
#endif