GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Functions | Variables
frame-tailcall.c File Reference
#include "defs.h"
#include "frame.h"
#include "dwarf2/frame-tailcall.h"
#include "dwarf2/loc.h"
#include "frame-unwind.h"
#include "block.h"
#include "hashtab.h"
#include "gdbtypes.h"
#include "regcache.h"
#include "value.h"
#include "gdbarch.h"

Go to the source code of this file.

Classes

struct  tailcall_cache
 

Functions

static hashval_t cache_hash (const void *arg)
 
static int cache_eq (const void *arg1, const void *arg2)
 
static struct tailcall_cachecache_new_ref1 (frame_info_ptr next_bottom_frame)
 
static void cache_ref (struct tailcall_cache *cache)
 
static void cache_unref (struct tailcall_cache *cache)
 
static int frame_is_tailcall (frame_info_ptr fi)
 
static struct tailcall_cachecache_find (frame_info_ptr fi)
 
static int existing_next_levels (frame_info_ptr this_frame, struct tailcall_cache *cache)
 
static int pretended_chain_levels (struct call_site_chain *chain)
 
static void tailcall_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static CORE_ADDR pretend_pc (frame_info_ptr this_frame, struct tailcall_cache *cache)
 
struct valuedwarf2_tailcall_prev_register_first (frame_info_ptr this_frame, void **tailcall_cachep, int regnum)
 
static struct valuetailcall_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static int tailcall_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
 
void dwarf2_tailcall_sniffer_first (frame_info_ptr this_frame, void **tailcall_cachep, const LONGEST *entry_cfa_sp_offsetp)
 
static void tailcall_frame_dealloc_cache (frame_info *self, void *this_cache)
 
static struct gdbarchtailcall_frame_prev_arch (frame_info_ptr this_frame, void **this_prologue_cache)
 
void _initialize_tailcall_frame ()
 

Variables

static htab_t cache_htab
 
const struct frame_unwind dwarf2_tailcall_frame_unwind
 

Function Documentation

◆ _initialize_tailcall_frame()

void _initialize_tailcall_frame ( )

Definition at line 487 of file frame-tailcall.c.

Referenced by initialize_all_files().

◆ cache_eq()

static int cache_eq ( const void * arg1,
const void * arg2 )
static

Definition at line 80 of file frame-tailcall.c.

References tailcall_cache::next_bottom_frame.

◆ cache_find()

static struct tailcall_cache * cache_find ( frame_info_ptr fi)
static

◆ cache_hash()

static hashval_t cache_hash ( const void * arg)
static

Definition at line 70 of file frame-tailcall.c.

References tailcall_cache::next_bottom_frame.

◆ cache_new_ref1()

static struct tailcall_cache * cache_new_ref1 ( frame_info_ptr next_bottom_frame)
static

◆ cache_ref()

static void cache_ref ( struct tailcall_cache * cache)
static

Definition at line 111 of file frame-tailcall.c.

References tailcall_cache::refc.

Referenced by tailcall_frame_sniffer().

◆ cache_unref()

static void cache_unref ( struct tailcall_cache * cache)
static

◆ dwarf2_tailcall_prev_register_first()

struct value * dwarf2_tailcall_prev_register_first ( frame_info_ptr this_frame,
void ** tailcall_cachep,
int regnum )

◆ dwarf2_tailcall_sniffer_first()

void dwarf2_tailcall_sniffer_first ( frame_info_ptr this_frame,
void ** tailcall_cachep,
const LONGEST * entry_cfa_sp_offsetp )

◆ existing_next_levels()

static int existing_next_levels ( frame_info_ptr this_frame,
struct tailcall_cache * cache )
static

◆ frame_is_tailcall()

static int frame_is_tailcall ( frame_info_ptr fi)
static

Definition at line 140 of file frame-tailcall.c.

References dwarf2_tailcall_frame_unwind, and frame_unwinder_is().

Referenced by cache_find().

◆ pretend_pc()

static CORE_ADDR pretend_pc ( frame_info_ptr this_frame,
struct tailcall_cache * cache )
static

◆ pretended_chain_levels()

static int pretended_chain_levels ( struct call_site_chain * chain)
static

◆ tailcall_frame_dealloc_cache()

static void tailcall_frame_dealloc_cache ( frame_info * self,
void * this_cache )
static

Definition at line 450 of file frame-tailcall.c.

References cache_unref().

◆ tailcall_frame_prev_arch()

static struct gdbarch * tailcall_frame_prev_arch ( frame_info_ptr this_frame,
void ** this_prologue_cache )
static

Definition at line 461 of file frame-tailcall.c.

References get_frame_arch(), and tailcall_cache::next_bottom_frame.

◆ tailcall_frame_prev_register()

static struct value * tailcall_frame_prev_register ( frame_info_ptr this_frame,
void ** this_cache,
int regnum )
static

◆ tailcall_frame_sniffer()

static int tailcall_frame_sniffer ( const struct frame_unwind * self,
frame_info_ptr this_frame,
void ** this_cache )
static

◆ tailcall_frame_this_id()

static void tailcall_frame_this_id ( frame_info_ptr this_frame,
void ** this_cache,
struct frame_id * this_id )
static

Variable Documentation

◆ cache_htab

htab_t cache_htab
static

Definition at line 34 of file frame-tailcall.c.

Referenced by cache_find(), cache_new_ref1(), and cache_unref().

◆ dwarf2_tailcall_frame_unwind

const struct frame_unwind dwarf2_tailcall_frame_unwind
Initial value:
=
{
"dwarf2 tailcall",
NULL,
}
static struct value * tailcall_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
static void tailcall_frame_dealloc_cache(frame_info *self, void *this_cache)
static void tailcall_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
static struct gdbarch * tailcall_frame_prev_arch(frame_info_ptr this_frame, void **this_prologue_cache)
static int tailcall_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
@ TAILCALL_FRAME
Definition frame.h:195

Definition at line 472 of file frame-tailcall.c.

Referenced by dwarf2_frame_dealloc_cache(), frame_is_tailcall(), and get_frame_unwind_table().