GDB (xrefs)
Classes | Macros | Functions | Variables
/tmp/gdb-8.1/gdb/objc-lang.c File Reference
#include "defs.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
#include "parser-defs.h"
#include "language.h"
#include "varobj.h"
#include "c-lang.h"
#include "objc-lang.h"
#include "complaints.h"
#include "value.h"
#include "symfile.h"
#include "objfiles.h"
#include "target.h"
#include "gdbcore.h"
#include "gdbcmd.h"
#include "frame.h"
#include "gdb_regex.h"
#include "regcache.h"
#include "block.h"
#include "infcall.h"
#include "valprint.h"
#include "cli/cli-utils.h"
#include <ctype.h>

Go to the source code of this file.

Classes

struct  objc_object
 
struct  objc_class
 
struct  objc_super
 
struct  objc_method
 
struct  selname
 
struct  objc_methcall
 

Macros

#define nmethcalls   (sizeof (methcalls) / sizeof (methcalls[0]))
 

Functions

struct symbollookup_struct_typedef (const char *name, const struct block *block, int noerr)
 
CORE_ADDR lookup_objc_class (struct gdbarch *gdbarch, const char *classname)
 
CORE_ADDR lookup_child_selector (struct gdbarch *gdbarch, const char *selname)
 
struct valuevalue_nsstring (struct gdbarch *gdbarch, char *ptr, int len)
 
char * objc_demangle (const char *mangled, int options)
 
static int objc_sniff_from_mangled_name (const char *mangled, char **demangled)
 
static CORE_ADDR objc_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc)
 
void start_msglist (void)
 
void add_msglist (struct stoken *str, int addcolon)
 
int end_msglist (struct parser_state *ps)
 
static int specialcmp (const char *a, const char *b)
 
static int compare_selectors (const void *a, const void *b)
 
static void info_selectors_command (const char *regexp, int from_tty)
 
static int compare_classes (const void *a, const void *b)
 
static void info_classes_command (const char *regexp, int from_tty)
 
static char * parse_selector (char *method, char **selector)
 
static char * parse_method (char *method, char *type, char **theclass, char **category, char **selector)
 
static void find_methods (char type, const char *theclass, const char *category, const char *selector, VEC(const_char_ptr) **symbol_names)
 
static void uniquify_strings (VEC(const_char_ptr) **strings)
 
const char * find_imps (const char *method, VEC(const_char_ptr) **symbol_names)
 
static void print_object_command (const char *args, int from_tty)
 
static int resolve_msgsend (CORE_ADDR pc, CORE_ADDR *new_pc)
 
static int resolve_msgsend_stret (CORE_ADDR pc, CORE_ADDR *new_pc)
 
static int resolve_msgsend_super (CORE_ADDR pc, CORE_ADDR *new_pc)
 
static int resolve_msgsend_super_stret (CORE_ADDR pc, CORE_ADDR *new_pc)
 
static void find_objc_msgsend (void)
 
static int find_objc_msgcall_submethod (int(*f)(CORE_ADDR, CORE_ADDR *), CORE_ADDR pc, CORE_ADDR *new_pc)
 
int find_objc_msgcall (CORE_ADDR pc, CORE_ADDR *new_pc)
 
void _initialize_objc_language (void)
 
static void read_objc_method (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_method *method)
 
static unsigned long read_objc_methlist_nmethods (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static void read_objc_methlist_method (struct gdbarch *gdbarch, CORE_ADDR addr, unsigned long num, struct objc_method *method)
 
static void read_objc_object (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_object *object)
 
static void read_objc_super (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_super *super)
 
static void read_objc_class (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_class *theclass)
 
static CORE_ADDR find_implementation_from_class (struct gdbarch *gdbarch, CORE_ADDR theclass, CORE_ADDR sel)
 
static CORE_ADDR find_implementation (struct gdbarch *gdbarch, CORE_ADDR object, CORE_ADDR sel)
 
void _initialize_objc_lang (void)
 

Variables

static const struct objfile_data * objc_objfile_data
 
static const struct op_print objc_op_print_tab []
 
static const char * objc_extensions []
 
const struct language_defn objc_language_defn
 
static int msglist_len
 
static struct selnameselname_chain
 
static char * msglist_sel
 
static struct objc_methcall methcalls []
 

Macro Definition Documentation

◆ nmethcalls

#define nmethcalls   (sizeof (methcalls) / sizeof (methcalls[0]))

Definition at line 1263 of file objc-lang.c.

Referenced by find_objc_msgcall(), and find_objc_msgsend().

Function Documentation

◆ _initialize_objc_lang()

void _initialize_objc_lang ( void  )

Definition at line 1600 of file objc-lang.c.

References objc_objfile_data.

◆ _initialize_objc_language()

void _initialize_objc_language ( void  )

◆ add_msglist()

void add_msglist ( struct stoken str,
int  addcolon 
)

Definition at line 448 of file objc-lang.c.

References stoken::length, msglist_len, msglist_sel, stoken::ptr, xfree(), and xmalloc().

Referenced by yyparse().

◆ compare_classes()

static int compare_classes ( const void *  a,
const void *  b 
)
static

Definition at line 704 of file objc-lang.c.

References _, error(), specialcmp(), and SYMBOL_PRINT_NAME.

Referenced by info_classes_command().

◆ compare_selectors()

static int compare_selectors ( const void *  a,
const void *  b 
)
static

Definition at line 538 of file objc-lang.c.

References _, error(), specialcmp(), and SYMBOL_PRINT_NAME.

Referenced by info_selectors_command().

◆ end_msglist()

int end_msglist ( struct parser_state ps)

◆ find_implementation()

static CORE_ADDR find_implementation ( struct gdbarch gdbarch,
CORE_ADDR  object,
CORE_ADDR  sel 
)
static

◆ find_implementation_from_class()

static CORE_ADDR find_implementation_from_class ( struct gdbarch gdbarch,
CORE_ADDR  theclass,
CORE_ADDR  sel 
)
static

◆ find_imps()

const char* find_imps ( const char *  method,
VEC(const_char_ptr) **  symbol_names 
)

◆ find_methods()

static void find_methods ( char  type,
const char *  theclass,
const char *  category,
const char *  selector,
VEC(const_char_ptr) **  symbol_names 
)
static

◆ find_objc_msgcall()

int find_objc_msgcall ( CORE_ADDR  pc,
CORE_ADDR new_pc 
)

Definition at line 1336 of file objc-lang.c.

References find_objc_msgcall_submethod(), find_objc_msgsend(), methcalls, and nmethcalls.

Referenced by objc_skip_trampoline().

◆ find_objc_msgcall_submethod()

static int find_objc_msgcall_submethod ( int(*)(CORE_ADDR, CORE_ADDR *)  f,
CORE_ADDR  pc,
CORE_ADDR new_pc 
)
static

Definition at line 1315 of file objc-lang.c.

References CATCH, END_CATCH, exception_fprintf(), gdb_stderr, RETURN_MASK_ALL, and TRY.

Referenced by find_objc_msgcall().

◆ find_objc_msgsend()

static void find_objc_msgsend ( void  )
static

◆ info_classes_command()

static void info_classes_command ( const char *  regexp,
int  from_tty 
)
static

◆ info_selectors_command()

static void info_selectors_command ( const char *  regexp,
int  from_tty 
)
static

◆ lookup_child_selector()

CORE_ADDR lookup_child_selector ( struct gdbarch gdbarch,
const char *  selname 
)

◆ lookup_objc_class()

CORE_ADDR lookup_objc_class ( struct gdbarch gdbarch,
const char *  classname 
)

◆ lookup_struct_typedef()

struct symbol* lookup_struct_typedef ( const char *  name,
const struct block block,
int  noerr 
)

◆ objc_demangle()

char* objc_demangle ( const char *  mangled,
int  options 
)

Definition at line 223 of file objc-lang.c.

References xfree(), and xmalloc().

Referenced by objc_sniff_from_mangled_name().

◆ objc_skip_trampoline()

static CORE_ADDR objc_skip_trampoline ( struct frame_info frame,
CORE_ADDR  stop_pc 
)
static

◆ objc_sniff_from_mangled_name()

static int objc_sniff_from_mangled_name ( const char *  mangled,
char **  demangled 
)
static

Definition at line 289 of file objc-lang.c.

References objc_demangle().

◆ parse_method()

static char* parse_method ( char *  method,
char *  type,
char **  theclass,
char **  category,
char **  selector 
)
static

Definition at line 878 of file objc-lang.c.

References gdb_assert, selector, and skip_spaces().

Referenced by find_imps(), and find_methods().

◆ parse_selector()

static char* parse_selector ( char *  method,
char **  selector 
)
static

Definition at line 826 of file objc-lang.c.

References gdb_assert, selector, and skip_spaces().

Referenced by find_imps().

◆ print_object_command()

static void print_object_command ( const char *  args,
int  from_tty 
)
static

◆ read_objc_class()

static void read_objc_class ( struct gdbarch gdbarch,
CORE_ADDR  addr,
struct objc_class theclass 
)
static

◆ read_objc_methlist_method()

static void read_objc_methlist_method ( struct gdbarch gdbarch,
CORE_ADDR  addr,
unsigned long  num,
struct objc_method method 
)
static

◆ read_objc_methlist_nmethods()

static unsigned long read_objc_methlist_nmethods ( struct gdbarch gdbarch,
CORE_ADDR  addr 
)
static

◆ read_objc_method()

static void read_objc_method ( struct gdbarch gdbarch,
CORE_ADDR  addr,
struct objc_method method 
)
static

◆ read_objc_object()

static void read_objc_object ( struct gdbarch gdbarch,
CORE_ADDR  addr,
struct objc_object object 
)
static

Definition at line 1399 of file objc-lang.c.

References gdbarch_byte_order(), and read_memory_unsigned_integer().

Referenced by find_implementation().

◆ read_objc_super()

static void read_objc_super ( struct gdbarch gdbarch,
CORE_ADDR  addr,
struct objc_super super 
)
static

◆ resolve_msgsend()

static int resolve_msgsend ( CORE_ADDR  pc,
CORE_ADDR new_pc 
)
static

◆ resolve_msgsend_stret()

static int resolve_msgsend_stret ( CORE_ADDR  pc,
CORE_ADDR new_pc 
)
static

◆ resolve_msgsend_super()

static int resolve_msgsend_super ( CORE_ADDR  pc,
CORE_ADDR new_pc 
)
static

◆ resolve_msgsend_super_stret()

static int resolve_msgsend_super_stret ( CORE_ADDR  pc,
CORE_ADDR new_pc 
)
static

◆ specialcmp()

static int specialcmp ( const char *  a,
const char *  b 
)
static

◆ start_msglist()

void start_msglist ( void  )

◆ uniquify_strings()

static void uniquify_strings ( VEC(const_char_ptr) **  strings)
static

Definition at line 1070 of file objc-lang.c.

References compare_strings(), qsort, VEC_address, VEC_empty, VEC_iterate, VEC_length, VEC_replace, and VEC_truncate.

Referenced by find_imps().

◆ value_nsstring()

struct value* value_nsstring ( struct gdbarch gdbarch,
char *  ptr,
int  len 
)

Variable Documentation

◆ methcalls

struct objc_methcall methcalls[]
static
Initial value:
= {
{ "_objc_msgSend", resolve_msgsend, 0, 0},
{ "_objc_msgSend_stret", resolve_msgsend_stret, 0, 0},
{ "_objc_msgSendSuper", resolve_msgsend_super, 0, 0},
{ "_objc_msgSendSuper_stret", resolve_msgsend_super_stret, 0, 0},
{ "_objc_getClass", NULL, 0, 0},
{ "_objc_getMetaClass", NULL, 0, 0}
}
static int resolve_msgsend_super_stret(CORE_ADDR pc, CORE_ADDR *new_pc)
Definition: objc-lang.c:1572
static int resolve_msgsend_stret(CORE_ADDR pc, CORE_ADDR *new_pc)
Definition: objc-lang.c:1522
static int resolve_msgsend_super(CORE_ADDR pc, CORE_ADDR *new_pc)
Definition: objc-lang.c:1544
static int resolve_msgsend(CORE_ADDR pc, CORE_ADDR *new_pc)
Definition: objc-lang.c:1500

Definition at line 1254 of file objc-lang.c.

Referenced by find_objc_msgcall(), and find_objc_msgsend().

◆ msglist_len

int msglist_len
static

Definition at line 429 of file objc-lang.c.

Referenced by add_msglist(), end_msglist(), and start_msglist().

◆ msglist_sel

char* msglist_sel
static

Definition at line 431 of file objc-lang.c.

Referenced by add_msglist(), end_msglist(), and start_msglist().

◆ objc_extensions

const char* objc_extensions[]
static
Initial value:
=
{
".m", NULL
}

Definition at line 364 of file objc-lang.c.

◆ objc_language_defn

const struct language_defn objc_language_defn

◆ objc_objfile_data

const struct objfile_data* objc_objfile_data
static

Definition at line 77 of file objc-lang.c.

Referenced by _initialize_objc_lang(), and find_methods().

◆ objc_op_print_tab

const struct op_print objc_op_print_tab[]
static

Definition at line 330 of file objc-lang.c.

◆ selname_chain

struct selname* selname_chain
static

Definition at line 430 of file objc-lang.c.

Referenced by end_msglist(), and start_msglist().