GDB (xrefs)
Classes | Macros | Functions | Variables
/tmp/gdb-8.1/gdb/stabsread.c File Reference
#include "defs.h"
#include "bfd.h"
#include "gdb_obstack.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
#include "symfile.h"
#include "objfiles.h"
#include "aout/stab_gnu.h"
#include "libaout.h"
#include "aout/aout64.h"
#include "gdb-stabs.h"
#include "buildsym.h"
#include "complaints.h"
#include "demangle.h"
#include "gdb-demangle.h"
#include "language.h"
#include "target-float.h"
#include "cp-abi.h"
#include "cp-support.h"
#include <ctype.h>
#include "stabsread.h"

Go to the source code of this file.

Classes

struct  nextfield
 
struct  next_fnfieldlist
 
struct  field_info
 
struct  nat
 
struct  ref_map
 

Macros

#define EXTERN
 
#define STABS_CONTINUE(pp, objfile)
 
#define INITIAL_TYPE_VECTOR_LENGTH   160
 
#define VISIBILITY_PRIVATE   '0' /* Stabs character for private field */
 
#define VISIBILITY_PROTECTED   '1' /* Stabs character for protected fld */
 
#define VISIBILITY_PUBLIC   '2' /* Stabs character for public field */
 
#define VISIBILITY_IGNORE   '9' /* Optimized out or zero length */
 
#define MAX_CHUNK_REFS   100
 
#define REF_CHUNK_SIZE   (MAX_CHUNK_REFS * sizeof (struct ref_map))
 
#define REF_MAP_SIZE(ref_chunk)   ((ref_chunk) * REF_CHUNK_SIZE)
 
#define NUMBER_RECOGNIZED   34
 

Functions

static void read_one_struct_field (struct field_info *, const char **, const char *, struct type *, struct objfile *)
 
static struct typedbx_alloc_type (int[2], struct objfile *)
 
static long read_huge_number (const char **, int, int *, int)
 
static struct typeerror_type (const char **, struct objfile *)
 
static void patch_block_stabs (struct pending *, struct pending_stabs *, struct objfile *)
 
static void fix_common_block (struct symbol *, CORE_ADDR)
 
static int read_type_number (const char **, int *)
 
static struct typeread_type (const char **, struct objfile *)
 
static struct typeread_range_type (const char **, int[2], int, struct objfile *)
 
static struct typeread_sun_builtin_type (const char **, int[2], struct objfile *)
 
static struct typeread_sun_floating_type (const char **, int[2], struct objfile *)
 
static struct typeread_enum_type (const char **, struct type *, struct objfile *)
 
static struct typers6000_builtin_type (int, struct objfile *)
 
static int read_member_functions (struct field_info *, const char **, struct type *, struct objfile *)
 
static int read_struct_fields (struct field_info *, const char **, struct type *, struct objfile *)
 
static int read_baseclasses (struct field_info *, const char **, struct type *, struct objfile *)
 
static int read_tilde_fields (struct field_info *, const char **, struct type *, struct objfile *)
 
static int attach_fn_fields_to_type (struct field_info *, struct type *)
 
static int attach_fields_to_type (struct field_info *, struct type *, struct objfile *)
 
static struct typeread_struct_type (const char **, struct type *, enum type_code, struct objfile *)
 
static struct typeread_array_type (const char **, struct type *, struct objfile *)
 
static struct fieldread_args (const char **, int, struct objfile *, int *, int *)
 
static void add_undefined_type (struct type *, int[2])
 
static int read_cpp_abbrev (struct field_info *, const char **, struct type *, struct objfile *)
 
static const char * find_name_end (const char *name)
 
static int process_reference (const char **string)
 
void stabsread_clear_cache (void)
 
static void invalid_cpp_abbrev_complaint (const char *arg1)
 
static void reg_value_complaint (int regnum, int num_regs, const char *sym)
 
static void stabs_general_complaint (const char *arg1)
 
static struct type ** dbx_lookup_type (int typenums[2], struct objfile *objfile)
 
static struct typedbx_init_float_type (struct objfile *objfile, int bits)
 
void ref_add (int refnum, struct symbol *sym, const char *stabs, CORE_ADDR value)
 
struct symbolref_search (int refnum)
 
int symbol_reference_defined (const char **string)
 
static int stab_reg_to_regnum (struct symbol *sym, struct gdbarch *gdbarch)
 
struct symboldefine_symbol (CORE_ADDR valu, const char *string, int desc, int type, struct objfile *objfile)
 
static char * stabs_method_name_from_physname (const char *physname)
 
static void complain_about_struct_wipeout (struct type *type)
 
static void set_length_in_type_chain (struct type *type)
 
void common_block_start (const char *name, struct objfile *objfile)
 
void common_block_end (struct objfile *objfile)
 
static void add_undefined_type_noname (struct type *type, int typenums[2])
 
static void add_undefined_type_1 (struct type *type)
 
static void cleanup_undefined_types_noname (struct objfile *objfile)
 
static void cleanup_undefined_types_1 (void)
 
void cleanup_undefined_stabs_types (struct objfile *objfile)
 
void scan_file_globals (struct objfile *objfile)
 
void stabsread_init (void)
 
void stabsread_new_init (void)
 
void start_stabs (void)
 
void end_stabs (void)
 
void finish_global_stabs (struct objfile *objfile)
 
void _initialize_stabsread (void)
 

Variables

static const char vptr_name [] = "_vptr$"
 
static const char vb_name [] = "_vb$"
 
static struct type ** undef_types
 
static int undef_types_allocated
 
static int undef_types_length
 
static struct symbolcurrent_symbol = NULL
 
static struct natnoname_undefs
 
static int noname_undefs_allocated
 
static int noname_undefs_length
 
static struct type ** type_vector
 
static int type_vector_length
 
static struct ref_mapref_map
 
static int ref_count = 0
 
static int ref_chunk = 0
 
static const struct symbol_register_ops stab_register_funcs
 
static int stab_register_index
 
static int stab_regparm_index
 
static const struct objfile_data * rs6000_builtin_type_data
 
static struct pendingcommon_block
 
static int common_block_i
 
static char * common_block_name
 

Macro Definition Documentation

◆ EXTERN

#define EXTERN

Definition at line 50 of file stabsread.c.

◆ INITIAL_TYPE_VECTOR_LENGTH

#define INITIAL_TYPE_VECTOR_LENGTH   160

Definition at line 227 of file stabsread.c.

Referenced by dbx_lookup_type().

◆ MAX_CHUNK_REFS

#define MAX_CHUNK_REFS   100

Definition at line 505 of file stabsread.c.

Referenced by ref_add().

◆ NUMBER_RECOGNIZED

#define NUMBER_RECOGNIZED   34

Referenced by rs6000_builtin_type().

◆ REF_CHUNK_SIZE

#define REF_CHUNK_SIZE   (MAX_CHUNK_REFS * sizeof (struct ref_map))

Definition at line 506 of file stabsread.c.

Referenced by ref_add().

◆ REF_MAP_SIZE

#define REF_MAP_SIZE (   ref_chunk)    ((ref_chunk) * REF_CHUNK_SIZE)

Definition at line 507 of file stabsread.c.

Referenced by ref_add().

◆ STABS_CONTINUE

#define STABS_CONTINUE (   pp,
  objfile 
)
Value:
do { \
if (**(pp) == '\\' || (**(pp) == '?' && (*(pp))[1] == '\0')) \
} while (0)
#define next_symbol_text(objfile)
Definition: buildsym.h:194

Definition at line 206 of file stabsread.c.

Referenced by read_args(), read_baseclasses(), read_enum_type(), read_member_functions(), read_struct_fields(), and read_tilde_fields().

◆ VISIBILITY_IGNORE

#define VISIBILITY_IGNORE   '9' /* Optimized out or zero length */

Definition at line 493 of file stabsread.c.

Referenced by attach_fields_to_type(), and read_one_struct_field().

◆ VISIBILITY_PRIVATE

#define VISIBILITY_PRIVATE   '0' /* Stabs character for private field */

◆ VISIBILITY_PROTECTED

#define VISIBILITY_PROTECTED   '1' /* Stabs character for protected fld */

Definition at line 491 of file stabsread.c.

Referenced by attach_fields_to_type(), read_baseclasses(), and read_member_functions().

◆ VISIBILITY_PUBLIC

#define VISIBILITY_PUBLIC   '2' /* Stabs character for public field */

Definition at line 492 of file stabsread.c.

Referenced by attach_fields_to_type(), read_baseclasses(), and read_one_struct_field().

Function Documentation

◆ _initialize_stabsread()

void _initialize_stabsread ( void  )

◆ add_undefined_type()

static void add_undefined_type ( struct type type,
int  typenums[2] 
)
static

Definition at line 4477 of file stabsread.c.

References add_undefined_type_1(), add_undefined_type_noname(), and TYPE_TAG_NAME.

Referenced by read_type().

◆ add_undefined_type_1()

static void add_undefined_type_1 ( struct type type)
static

Definition at line 4451 of file stabsread.c.

References type, undef_types, undef_types_allocated, undef_types_length, and xrealloc().

Referenced by add_undefined_type().

◆ add_undefined_type_noname()

static void add_undefined_type_noname ( struct type type,
int  typenums[2] 
)
static

◆ attach_fields_to_type()

static int attach_fields_to_type ( struct field_info fip,
struct type type,
struct objfile objfile 
)
static

◆ attach_fn_fields_to_type()

static int attach_fn_fields_to_type ( struct field_info fip,
struct type type 
)
static

◆ cleanup_undefined_stabs_types()

void cleanup_undefined_stabs_types ( struct objfile objfile)

◆ cleanup_undefined_types_1()

static void cleanup_undefined_types_1 ( void  )
static

◆ cleanup_undefined_types_noname()

static void cleanup_undefined_types_noname ( struct objfile objfile)
static

◆ common_block_end()

void common_block_end ( struct objfile objfile)

◆ common_block_start()

void common_block_start ( const char *  name,
struct objfile objfile 
)

◆ complain_about_struct_wipeout()

static void complain_about_struct_wipeout ( struct type type)
static

◆ dbx_alloc_type()

static struct type * dbx_alloc_type ( int  typenums[2],
struct objfile objfile 
)
static

Definition at line 336 of file stabsread.c.

References alloc_type(), and dbx_lookup_type().

Referenced by read_type().

◆ dbx_init_float_type()

static struct type* dbx_init_float_type ( struct objfile objfile,
int  bits 
)
static

◆ dbx_lookup_type()

static struct type** dbx_lookup_type ( int  typenums[2],
struct objfile objfile 
)
static

◆ define_symbol()

struct symbol* define_symbol ( CORE_ADDR  valu,
const char *  string,
int  desc,
int  type,
struct objfile objfile 
)

Definition at line 645 of file stabsread.c.

References _, add_symbol_to_list(), allocate_symbol(), BMSYMBOL_VALUE_ADDRESS, objfile_type::builtin_char, objfile_type::builtin_double, objfile_type::builtin_int, objfile_type::builtin_long, objfile_type::builtin_unsigned_int, complaint, cp_canonicalize_string(), cp_scan_for_anonymous_namespaces(), create_array_type(), create_static_range_type(), current_subfile, current_symbol, error_type(), file_symbols, find_name_end(), gdbarch_believe_pcc_promotion(), gdbarch_byte_order(), gdbarch_int_bit(), gdbarch_stabs_argument_has_addr(), gdbarch_static_transform_name(), gdbarch_static_transform_name_p(), get_objfile_arch(), global_sym_chain, global_symbols, hashname(), is_cplus_marker(), subfile::language, language_ada, language_cplus, language_pascal, LOC_ARG, LOC_BLOCK, LOC_CONST, LOC_CONST_BYTES, LOC_LABEL, LOC_LOCAL, LOC_REF_ARG, LOC_REGISTER, LOC_REGPARM_ADDR, LOC_STATIC, LOC_TYPEDEF, local_symbols, lookup_function_type(), lookup_minimal_symbol(), lookup_pointer_type(), name, pending::nsyms, obconcat(), objfile_type(), processing_gcc_compilation, read_type(), stab_register_index, stab_regparm_index, string, STRUCT_DOMAIN, pending::symbol, SYMBOL_ACLASS_INDEX, SYMBOL_CLASS, SYMBOL_DOMAIN, SYMBOL_IS_ARGUMENT, SYMBOL_LANGUAGE, SYMBOL_LINE, SYMBOL_LINKAGE_NAME, SYMBOL_SET_LANGUAGE, SYMBOL_SET_LINKAGE_NAME, SYMBOL_SET_NAMES, SYMBOL_TYPE, SYMBOL_VALUE, SYMBOL_VALUE_ADDRESS, SYMBOL_VALUE_BYTES, SYMBOL_VALUE_CHAIN, symfile_complaints, TARGET_CHAR_BIT, target_float_from_string(), TYPE_ALLOC, TYPE_BASECLASS, TYPE_BASECLASS_NAME, TYPE_CODE, TYPE_CODE_FUNC, TYPE_CODE_INT, TYPE_CODE_PTR, TYPE_CODE_STRUCT, TYPE_CODE_UNION, TYPE_CODE_VOID, TYPE_FIELD_ARTIFICIAL, TYPE_FIELD_TYPE, TYPE_FIELDS, TYPE_LENGTH, TYPE_N_BASECLASSES, TYPE_NAME, type_name_no_tag(), TYPE_NFIELDS, TYPE_PROTOTYPED, TYPE_TAG_NAME, TYPE_UNSIGNED, VAR_DOMAIN, vtbl_ptr_name, and within_function.

Referenced by process_one_symbol(), process_xcoff_symbol(), and read_xcoff_symtab().

◆ end_stabs()

void end_stabs ( void  )

◆ error_type()

static struct type * error_type ( const char **  pp,
struct objfile objfile 
)
static

◆ find_name_end()

static const char * find_name_end ( const char *  name)
static

Definition at line 4819 of file stabsread.c.

References _, error(), and name.

Referenced by define_symbol().

◆ finish_global_stabs()

void finish_global_stabs ( struct objfile objfile)

Definition at line 4806 of file stabsread.c.

References global_stabs, global_symbols, patch_block_stabs(), and xfree().

Referenced by end_symtab_get_static_block().

◆ fix_common_block()

static void fix_common_block ( struct symbol sym,
CORE_ADDR  valu 
)
static

Definition at line 4410 of file stabsread.c.

References pending::next, pending::nsyms, pending::symbol, SYMBOL_TYPE, and SYMBOL_VALUE_ADDRESS.

Referenced by scan_file_globals().

◆ invalid_cpp_abbrev_complaint()

static void invalid_cpp_abbrev_complaint ( const char *  arg1)
static

Definition at line 165 of file stabsread.c.

References _, complaint, and symfile_complaints.

Referenced by read_cpp_abbrev().

◆ patch_block_stabs()

static void patch_block_stabs ( struct pending symbols,
struct pending_stabs stabs,
struct objfile objfile 
)
static

◆ process_reference()

static int process_reference ( const char **  string)
static

Definition at line 567 of file stabsread.c.

Referenced by follow_types(), and symbol_reference_defined().

◆ read_args()

static struct field * read_args ( const char **  pp,
int  end,
struct objfile objfile,
int *  nargsp,
int *  varargsp 
)
static

Definition at line 4271 of file stabsread.c.

References _, complaint, read_type(), STABS_CONTINUE, symfile_complaints, TYPE_CODE, TYPE_CODE_VOID, and XCNEWVEC.

Referenced by read_type().

◆ read_array_type()

static struct type * read_array_type ( const char **  pp,
struct type type,
struct objfile objfile 
)
static

◆ read_baseclasses()

static int read_baseclasses ( struct field_info fip,
const char **  pp,
struct type type,
struct objfile objfile 
)
static

◆ read_cpp_abbrev()

static int read_cpp_abbrev ( struct field_info fip,
const char **  pp,
struct type type,
struct objfile objfile 
)
static

◆ read_enum_type()

static struct type * read_enum_type ( const char **  pp,
struct type type,
struct objfile objfile 
)
static

◆ read_huge_number()

static long read_huge_number ( const char **  pp,
int  end,
int *  bits,
int  twos_complement_bits 
)
static

◆ read_member_functions()

static int read_member_functions ( struct field_info fip,
const char **  pp,
struct type type,
struct objfile objfile 
)
static

◆ read_one_struct_field()

static void read_one_struct_field ( struct field_info fip,
const char **  pp,
const char *  p,
struct type type,
struct objfile objfile 
)
static

◆ read_range_type()

static struct type * read_range_type ( const char **  pp,
int  typenums[2],
int  type_size,
struct objfile objfile 
)
static

◆ read_struct_fields()

static int read_struct_fields ( struct field_info fip,
const char **  pp,
struct type type,
struct objfile objfile 
)
static

◆ read_struct_type()

static struct type* read_struct_type ( const char **  pp,
struct type type,
enum type_code type_code  ,
struct objfile objfile 
)
static

◆ read_sun_builtin_type()

static struct type * read_sun_builtin_type ( const char **  pp,
int  typenums[2],
struct objfile objfile 
)
static

◆ read_sun_floating_type()

static struct type * read_sun_floating_type ( const char **  pp,
int  typenums[2],
struct objfile objfile 
)
static

◆ read_tilde_fields()

static int read_tilde_fields ( struct field_info fip,
const char **  pp,
struct type type,
struct objfile objfile 
)
static

◆ read_type()

static struct type * read_type ( const char **  pp,
struct objfile objfile 
)
static

◆ read_type_number()

static int read_type_number ( const char **  pp,
int *  typenums 
)
static

Definition at line 465 of file stabsread.c.

References read_huge_number().

Referenced by read_range_type(), and read_type().

◆ ref_add()

void ref_add ( int  refnum,
struct symbol sym,
const char *  stabs,
CORE_ADDR  value 
)

◆ ref_search()

struct symbol* ref_search ( int  refnum)

Definition at line 556 of file stabsread.c.

References ref_count, and ref_map::sym.

Referenced by process_one_symbol().

◆ reg_value_complaint()

static void reg_value_complaint ( int  regnum,
int  num_regs,
const char *  sym 
)
static

Definition at line 171 of file stabsread.c.

References _, complaint, regnum, and symfile_complaints.

Referenced by stab_reg_to_regnum().

◆ rs6000_builtin_type()

static struct type * rs6000_builtin_type ( int  typenum,
struct objfile objfile 
)
static

◆ scan_file_globals()

void scan_file_globals ( struct objfile objfile)

◆ set_length_in_type_chain()

static void set_length_in_type_chain ( struct type type)
static

Definition at line 3480 of file stabsread.c.

References complain_about_struct_wipeout(), TYPE_CHAIN, and TYPE_LENGTH.

Referenced by read_enum_type(), and read_struct_type().

◆ stab_reg_to_regnum()

static int stab_reg_to_regnum ( struct symbol sym,
struct gdbarch gdbarch 
)
static

◆ stabs_general_complaint()

static void stabs_general_complaint ( const char *  arg1)
static

Definition at line 179 of file stabsread.c.

References complaint, and symfile_complaints.

Referenced by read_one_struct_field().

◆ stabs_method_name_from_physname()

static char* stabs_method_name_from_physname ( const char *  physname)
static

Definition at line 2248 of file stabsread.c.

References _, complaint, method_name_from_physname(), and symfile_complaints.

Referenced by read_member_functions().

◆ stabsread_clear_cache()

void stabsread_clear_cache ( void  )

Definition at line 521 of file stabsread.c.

References ref_chunk, and ref_count.

Referenced by coff_symfile_finish().

◆ stabsread_init()

void stabsread_init ( void  )

Definition at line 4760 of file stabsread.c.

Referenced by dbx_psymtab_to_symtab_1(), and xcoff_psymtab_to_symtab_1().

◆ stabsread_new_init()

void stabsread_new_init ( void  )

◆ start_stabs()

void start_stabs ( void  )

◆ symbol_reference_defined()

int symbol_reference_defined ( const char **  string)

Definition at line 592 of file stabsread.c.

References process_reference(), and string.

Referenced by process_one_symbol().

Variable Documentation

◆ common_block

struct pending* common_block
static

Definition at line 4323 of file stabsread.c.

Referenced by common_block_end(), and read_common_block().

◆ common_block_i

int common_block_i
static

Definition at line 4324 of file stabsread.c.

Referenced by common_block_end(), and common_block_start().

◆ common_block_name

char* common_block_name
static

Definition at line 4329 of file stabsread.c.

Referenced by common_block_end(), common_block_start(), and start_stabs().

◆ current_symbol

struct symbol* current_symbol = NULL
static

Definition at line 189 of file stabsread.c.

Referenced by define_symbol().

◆ noname_undefs

struct nat* noname_undefs
static

◆ noname_undefs_allocated

int noname_undefs_allocated
static

Definition at line 202 of file stabsread.c.

Referenced by _initialize_stabsread(), and add_undefined_type_noname().

◆ noname_undefs_length

int noname_undefs_length
static

◆ ref_chunk

int ref_chunk = 0
static

Definition at line 515 of file stabsread.c.

Referenced by ref_add(), and stabsread_clear_cache().

◆ ref_count

int ref_count = 0
static

Definition at line 512 of file stabsread.c.

Referenced by ref_add(), ref_search(), and stabsread_clear_cache().

◆ ref_map

struct ref_map* ref_map
static

Definition at line 509 of file stabsread.c.

◆ rs6000_builtin_type_data

const struct objfile_data* rs6000_builtin_type_data
static

Definition at line 2076 of file stabsread.c.

Referenced by _initialize_stabsread(), and rs6000_builtin_type().

◆ stab_register_funcs

const struct symbol_register_ops stab_register_funcs
static
Initial value:
= {
}
static int stab_reg_to_regnum(struct symbol *sym, struct gdbarch *gdbarch)
Definition: stabsread.c:616

Definition at line 635 of file stabsread.c.

Referenced by _initialize_stabsread().

◆ stab_register_index

int stab_register_index
static

Definition at line 641 of file stabsread.c.

Referenced by _initialize_stabsread(), and define_symbol().

◆ stab_regparm_index

int stab_regparm_index
static

Definition at line 642 of file stabsread.c.

Referenced by _initialize_stabsread(), and define_symbol().

◆ type_vector

struct type** type_vector
static

Definition at line 218 of file stabsread.c.

Referenced by dbx_lookup_type(), end_stabs(), and start_stabs().

◆ type_vector_length

int type_vector_length
static

Definition at line 222 of file stabsread.c.

Referenced by dbx_lookup_type(), end_stabs(), and start_stabs().

◆ undef_types

struct type** undef_types
static

◆ undef_types_allocated

int undef_types_allocated
static

Definition at line 187 of file stabsread.c.

Referenced by _initialize_stabsread(), and add_undefined_type_1().

◆ undef_types_length

int undef_types_length
static

◆ vb_name

const char vb_name[] = "_vb$"
static

Definition at line 162 of file stabsread.c.

Referenced by read_cpp_abbrev().

◆ vptr_name

const char vptr_name[] = "_vptr$"
static

Definition at line 161 of file stabsread.c.

Referenced by read_cpp_abbrev(), and read_tilde_fields().