GDB (xrefs)
|
#include "defs.h"
#include "bfd.h"
#include <sys/types.h>
#include <fcntl.h>
#include <ctype.h>
#include <sys/file.h>
#include <sys/stat.h>
#include "coff/internal.h"
#include "libcoff.h"
#include "coff/xcoff.h"
#include "libxcoff.h"
#include "coff/rs6000.h"
#include "xcoffread.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "symfile.h"
#include "objfiles.h"
#include "buildsym.h"
#include "stabsread.h"
#include "expression.h"
#include "complaints.h"
#include "psympriv.h"
#include "gdb-stabs.h"
#include "aout/stab_gnu.h"
Go to the source code of this file.
Classes | |
struct | symloc |
struct | coff_symbol |
struct | coff_symfile_info |
struct | find_targ_sec_arg |
struct | _inclTable |
Macros | |
#define | INITIAL_STABVECTOR_LENGTH 40 |
#define | XCOFF_DATA(objfile) |
#define | NUM_OF_FUNCTIONS 20 |
#define | INITIAL_INCLUDE_TABLE_LENGTH 20 |
#define | complete_symtab(name, start_addr) |
#define | CSECT(PP) ((PP)->x_csect) |
#define | CSECT_LEN(PP) (CSECT(PP).x_scnlen.l) |
#define | CSECT_ALIGN(PP) (SMTYP_ALIGN(CSECT(PP).x_smtyp)) |
#define | CSECT_SMTYP(PP) (SMTYP_SMTYP(CSECT(PP).x_smtyp)) |
#define | CSECT_SCLAS(PP) (CSECT(PP).x_smclas) |
#define | SYMBOL_DUP(SYMBOL1, SYMBOL2) |
#define | SYMNAME_ALLOC(NAME, ALLOCED) |
Typedefs | |
typedef struct _inclTable | InclTable |
Functions | |
static void | bf_notfound_complaint (void) |
static void | ef_complaint (int arg1) |
static void | eb_complaint (int arg1) |
static void | xcoff_initial_scan (struct objfile *, int) |
static void | scan_xcoff_symtab (struct objfile *) |
static char * | xcoff_next_symbol_text (struct objfile *) |
static void | record_include_begin (struct coff_symbol *) |
static void | enter_line_range (struct subfile *, unsigned, unsigned, CORE_ADDR, CORE_ADDR, unsigned *) |
static void | init_stringtab (bfd *, file_ptr, struct objfile *) |
static void | xcoff_symfile_init (struct objfile *) |
static void | xcoff_new_init (struct objfile *) |
static void | xcoff_symfile_finish (struct objfile *) |
static char * | coff_getfilename (union internal_auxent *, struct objfile *) |
static void | read_symbol (struct internal_syment *, int) |
static int | read_symbol_lineno (int) |
static CORE_ADDR | read_symbol_nvalue (int) |
static struct symbol * | process_xcoff_symbol (struct coff_symbol *, struct objfile *) |
static void | read_xcoff_symtab (struct objfile *, struct partial_symtab *) |
static int | compare_lte (const void *, const void *) |
static struct linetable * | arrange_linetable (struct linetable *) |
static void | record_include_end (struct coff_symbol *) |
static void | process_linenos (CORE_ADDR, CORE_ADDR) |
static int | secnum_to_section (int, struct objfile *) |
static asection * | secnum_to_bfd_section (int, struct objfile *) |
static void | find_targ_sec (bfd *, asection *, void *) |
static void | xcoff_secnum_to_sections (int n_scnum, struct objfile *objfile, asection **bfd_sect, int *secnum) |
static void | allocate_include_entry (void) |
static void | aix_process_linenos (struct objfile *objfile) |
static void | record_minimal_symbol (const char *name, CORE_ADDR address, enum minimal_symbol_type ms_type, int n_scnum, struct objfile *objfile) |
static void | find_linenos (struct bfd *abfd, struct bfd_section *asect, void *vpinfo) |
static void | xcoff_psymtab_to_symtab_1 (struct objfile *objfile, struct partial_symtab *pst) |
static void | xcoff_read_symtab (struct partial_symtab *self, struct objfile *objfile) |
static struct partial_symtab * | xcoff_start_psymtab (struct objfile *objfile, const char *filename, int first_symnum, struct partial_symbol **global_syms, struct partial_symbol **static_syms) |
static struct partial_symtab * | xcoff_end_psymtab (struct objfile *objfile, struct partial_symtab *pst, const char **include_list, int num_includes, int capping_symbol_number, struct partial_symtab **dependency_list, int number_dependencies, int textlow_not_set) |
static void | swap_sym (struct internal_syment *symbol, union internal_auxent *aux, const char **name, char **raw, unsigned int *symnump, struct objfile *objfile) |
static void | function_outside_compilation_unit_complaint (const char *arg1) |
CORE_ADDR | xcoff_get_toc_offset (struct objfile *objfile) |
static void | xcoff_symfile_offsets (struct objfile *objfile, const struct section_addr_info *addrs) |
static int | xcoff_get_core_n_import_files (bfd *abfd) |
int | xcoff_get_n_import_files (bfd *abfd) |
static void | xcoff_free_info (struct objfile *objfile, void *arg) |
void | _initialize_xcoffread (void) |
Variables | |
static const struct objfile_data * | xcoff_objfile_data_key |
static enum language | psymtab_language = language_unknown |
static struct coff_symbol | fcn_cs_saved |
static bfd * | symfile_bfd |
static CORE_ADDR | cur_src_end_addr |
static CORE_ADDR | first_object_file_end |
static unsigned | local_symesz |
static const struct dwarf2_debug_sections | dwarf2_xcoff_names |
static InclTable * | inclTable |
static int | inclIndx |
static int | inclLength |
static int | inclDepth |
static struct partial_symtab * | this_symtab_psymtab |
static struct objfile * | this_symtab_objfile |
static int | static_block_base = 0 |
static int | static_block_section = -1 |
static int | symname_alloced = 0 |
static char * | raw_symbol |
static unsigned int | first_fun_line_offset |
static const struct sym_fns | xcoff_sym_fns |
initialize_file_ftype | _initialize_xcoffread |
#define complete_symtab | ( | name, | |
start_addr | |||
) |
Definition at line 902 of file xcoffread.c.
Referenced by read_xcoff_symtab().
#define CSECT | ( | PP | ) | ((PP)->x_csect) |
#define CSECT_ALIGN | ( | PP | ) | (SMTYP_ALIGN(CSECT(PP).x_smtyp)) |
#define CSECT_LEN | ( | PP | ) | (CSECT(PP).x_scnlen.l) |
Referenced by read_xcoff_symtab().
#define CSECT_SCLAS | ( | PP | ) | (CSECT(PP).x_smclas) |
Referenced by read_xcoff_symtab().
#define CSECT_SMTYP | ( | PP | ) | (SMTYP_SMTYP(CSECT(PP).x_smtyp)) |
Referenced by read_xcoff_symtab().
#define INITIAL_INCLUDE_TABLE_LENGTH 20 |
Definition at line 534 of file xcoffread.c.
Referenced by allocate_include_entry().
#define INITIAL_STABVECTOR_LENGTH 40 |
Definition at line 120 of file xcoffread.c.
#define NUM_OF_FUNCTIONS 20 |
Referenced by arrange_linetable().
#define SYMBOL_DUP | ( | SYMBOL1, | |
SYMBOL2 | |||
) |
Definition at line 1516 of file xcoffread.c.
Referenced by process_xcoff_symbol().
#define SYMNAME_ALLOC | ( | NAME, | |
ALLOCED | |||
) |
Definition at line 1522 of file xcoffread.c.
Referenced by process_xcoff_symbol().
#define XCOFF_DATA | ( | objfile | ) |
Definition at line 151 of file xcoffread.c.
Referenced by coff_getfilename(), enter_line_range(), init_stringtab(), process_linenos(), read_symbol(), read_symbol_lineno(), read_xcoff_symtab(), scan_xcoff_symtab(), swap_sym(), xcoff_get_toc_offset(), xcoff_initial_scan(), and xcoff_next_symbol_text().
typedef struct _inclTable InclTable |
void _initialize_xcoffread | ( | void | ) |
Definition at line 3179 of file xcoffread.c.
References add_symtab_fns(), xcoff_free_info(), and xcoff_objfile_data_key.
|
static |
Definition at line 810 of file xcoffread.c.
References cur_src_end_addr, last_source_start_addr, and process_linenos().
|
static |
Definition at line 583 of file xcoffread.c.
References inclLength, INITIAL_INCLUDE_TABLE_LENGTH, xmalloc(), and xrealloc().
Referenced by record_include_begin(), and record_include_end().
Definition at line 425 of file xcoffread.c.
References compare_lte(), linetable::item, linetable_entry::line, line, linetable::nitems, NUM_OF_FUNCTIONS, linetable_entry::pc, qsort, xfree(), xmalloc(), and xrealloc().
Referenced by process_linenos().
|
static |
Definition at line 175 of file xcoffread.c.
References _, complaint(), and symfile_complaints.
Referenced by read_symbol_lineno().
|
static |
Definition at line 1672 of file xcoffread.c.
References XCOFF_DATA.
Referenced by read_xcoff_symtab(), and scan_xcoff_symtab().
Definition at line 409 of file xcoffread.c.
References linetable_entry::pc.
Referenced by arrange_linetable().
|
static |
Definition at line 189 of file xcoffread.c.
References _, complaint(), and symfile_complaints.
Referenced by read_xcoff_symtab().
|
static |
Definition at line 182 of file xcoffread.c.
References _, complaint(), and symfile_complaints.
Referenced by read_xcoff_symtab().
|
static |
Definition at line 832 of file xcoffread.c.
References _, ANOFFSET, complaint(), gdbarch_addr_bits_remove(), get_objfile_arch(), objfile::obfd, read_symbol_lineno(), read_symbol_nvalue(), record_line, SECT_OFF_TEXT, objfile::section_offsets, SEEK_SET, symfile_complaints, this_symtab_objfile, and XCOFF_DATA.
Referenced by process_linenos().
|
static |
Definition at line 1792 of file xcoffread.c.
References coff_symfile_info::max_lineno_offset, coff_symfile_info::min_lineno_offset, offset, and size.
Referenced by xcoff_initial_scan().
|
static |
Definition at line 257 of file xcoffread.c.
References find_targ_sec_arg::bfd_sect, gdb_bfd_section_index(), find_targ_sec_arg::objfile, find_targ_sec_arg::resultp, SECT_OFF_DATA, SECT_OFF_TEXT, and find_targ_sec_arg::targ_index.
Referenced by xcoff_secnum_to_sections().
|
static |
Definition at line 2178 of file xcoffread.c.
References _, complaint(), and symfile_complaints.
Referenced by scan_xcoff_symtab().
|
static |
Definition at line 1953 of file xcoffread.c.
References _, error(), objfile::objfile_obstack, SEEK_SET, coff_symfile_info::strtbl, and XCOFF_DATA.
Referenced by xcoff_initial_scan().
Definition at line 615 of file xcoffread.c.
References arrange_linetable(), current_subfile, _inclTable::end, enter_line_range(), _inclTable::funStartLine, get_last_source_file(), inclIndx, subfile::line_vector, subfile::line_vector_length, subfile::name, name, linetable::nitems, objfile::obfd, offset, pop_subfile(), push_subfile(), partial_symtab::read_symtab_private, start_subfile(), _inclTable::subfile, XCOFF_DATA, xfree(), xmalloc(), and xrealloc().
Referenced by aix_process_linenos().
|
static |
Definition at line 1530 of file xcoffread.c.
References _, add_symbol_to_list(), ANOFFSET, coff_symbol::c_name, coff_symbol::c_sclass, coff_symbol::c_secnum, coff_symbol::c_type, coff_symbol::c_value, common_block_end(), common_block_start(), complaint(), define_symbol(), fcn_cs_saved, file_symbols, global_stabs, global_symbols, initialize_objfile_symbol(), LOC_BLOCK, name, objfile_type::nodebug_data_symbol, objfile_type::nodebug_text_symbol, objfile_type(), secnum_to_section(), objfile::section_offsets, static_block_base, static_block_section, SYMBOL_ACLASS_INDEX, SYMBOL_DOMAIN, SYMBOL_DUP, SYMBOL_SECTION, SYMBOL_SET_LINKAGE_NAME, SYMBOL_TYPE, SYMBOL_VALUE_ADDRESS, symfile_complaints, SYMNAME_ALLOC, VAR_DOMAIN, and within_function.
Referenced by read_xcoff_symtab().
|
static |
Definition at line 1689 of file xcoffread.c.
References _, complaint(), local_symesz, objfile::obfd, symfile_complaints, coff_symfile_info::symtbl, coff_symfile_info::symtbl_num_syms, and XCOFF_DATA.
Referenced by read_symbol_nvalue(), and read_xcoff_symtab().
Definition at line 1723 of file xcoffread.c.
References bf_notfound_complaint(), local_symesz, name, objfile::obfd, coff_symfile_info::strtbl, symfile_bfd, coff_symfile_info::symtbl, coff_symfile_info::symtbl_num_syms, this_symtab_objfile, and XCOFF_DATA.
Referenced by enter_line_range().
Definition at line 1710 of file xcoffread.c.
References read_symbol().
Referenced by enter_line_range().
|
static |
Definition at line 1006 of file xcoffread.c.
References _, ANOFFSET, coff_symbol::c_name, coff_symbol::c_naux, coff_symbol::c_sclass, coff_symbol::c_secnum, coff_symbol::c_symnum, coff_symbol::c_type, coff_symbol::c_value, coff_getfilename(), complaint(), complete_symtab, partial_symtab::compunit_symtab, context_stack_depth, CSECT_LEN, CSECT_SCLAS, CSECT_SMTYP, cur_src_end_addr, coff_symfile_info::debugsec, define_symbol(), context_stack::depth, eb_complaint(), ef_complaint(), end_stabs(), end_symtab(), fcn_cs_saved, finish_block(), first_object_file_end, get_last_source_file(), int, local_symbols, local_symesz, context_stack::locals, context_stack::name, objfile::obfd, objfile::objfile_obstack, context_stack::old_blocks, pop_context(), process_xcoff_symbol(), push_context(), QUIT, read_symbol(), partial_symtab::read_symtab_private, record_debugformat(), record_include_begin(), record_include_end(), secnum_to_section(), SECT_OFF_TEXT, objfile::section_offsets, set_last_source_file(), context_stack::start_addr, start_stabs(), start_symtab(), coff_symfile_info::strtbl, SYMBOL_SECTION, symfile_complaints, symnum, coff_symfile_info::symtbl, within_function, and XCOFF_DATA.
Referenced by xcoff_psymtab_to_symtab_1().
|
static |
Definition at line 543 of file xcoffread.c.
References _, allocate_include_entry(), _inclTable::begin, coff_symbol::c_name, coff_symbol::c_value, complaint(), inclDepth, inclIndx, _inclTable::name, and symfile_complaints.
Referenced by read_xcoff_symtab().
|
static |
Definition at line 564 of file xcoffread.c.
References _, allocate_include_entry(), coff_symbol::c_value, complaint(), _inclTable::end, inclDepth, inclIndx, and symfile_complaints.
Referenced by read_xcoff_symtab().
|
static |
Definition at line 931 of file xcoffread.c.
References name, prim_record_minimal_symbol_and_info(), and secnum_to_section().
Referenced by scan_xcoff_symtab().
|
static |
Definition at line 2187 of file xcoffread.c.
References _, add_psymbol_to_list(), ANOFFSET, coff_getfilename(), complaint(), deduce_language_from_filename(), partial_symtab::filename, function_outside_compilation_unit_complaint(), gdbarch_static_transform_name(), gdbarch_static_transform_name_p(), get_objfile_arch(), objfile::global_psymbols, language_c, language_cplus, language_unknown, LOC_BLOCK, LOC_CONST, LOC_STATIC, LOC_TYPEDEF, local_symesz, mst_bss, mst_data, mst_file_bss, mst_file_data, mst_file_text, mst_solib_trampoline, mst_text, name, psymbol_allocation_list::next, next_symbol_text, next_symbol_text_func, objfile::obfd, psymtab_language, QUIT, record_minimal_symbol(), secnum_to_bfd_section(), SECT_OFF_DATA, SECT_OFF_TEXT, objfile::section_offsets, set_last_source_file(), startswith(), objfile::static_psymbols, STRUCT_DOMAIN, swap_sym(), symfile_complaints, partial_symtab::texthigh, partial_symtab::textlow, VAR_DOMAIN, warning(), XCOFF_DATA, xcoff_end_psymtab(), xcoff_next_symbol_text(), xcoff_start_psymtab(), xfree(), and xmalloc().
Referenced by xcoff_initial_scan().
Definition at line 315 of file xcoffread.c.
References find_targ_sec_arg::bfd_sect, and xcoff_secnum_to_sections().
Referenced by scan_xcoff_symtab().
Definition at line 303 of file xcoffread.c.
References xcoff_secnum_to_sections().
Referenced by process_xcoff_symbol(), read_xcoff_symtab(), and record_minimal_symbol().
|
static |
Definition at line 2132 of file xcoffread.c.
References objfile::obfd, objfile::objfile_obstack, and XCOFF_DATA.
Referenced by scan_xcoff_symtab().
|
static |
Definition at line 2045 of file xcoffread.c.
References allocate_psymtab(), partial_symtab::compunit_symtab, partial_symtab::dependencies, discard_psymtab(), first_fun_line_offset, objfile::global_psymbols, partial_symtab::globals_offset, psymbol_allocation_list::list, partial_symtab::n_global_syms, partial_symtab::n_static_syms, psymbol_allocation_list::next, partial_symtab::number_of_dependencies, objfile::objfile_obstack, partial_symtab::read_symtab, partial_symtab::read_symtab_private, partial_symtab::readin, sort_pst_symbols(), objfile::static_psymbols, partial_symtab::statics_offset, partial_symtab::texthigh, and partial_symtab::textlow.
Referenced by scan_xcoff_symtab().
|
static |
Definition at line 3170 of file xcoffread.c.
References xfree().
Referenced by _initialize_xcoffread().
|
static |
Definition at line 3109 of file xcoffread.c.
References offset.
Referenced by xcoff_get_n_import_files().
int xcoff_get_n_import_files | ( | bfd * | abfd | ) |
Definition at line 3142 of file xcoffread.c.
References xcoff_get_core_n_import_files().
Referenced by rs6000_aix_osabi_sniffer(), and rs6000_lynx178_osabi_sniffer().
Definition at line 2921 of file xcoffread.c.
References XCOFF_DATA.
Referenced by solib_aix_get_toc_value().
Definition at line 2938 of file xcoffread.c.
References _, coff_symfile_info::debugsec, do_cleanups(), dwarf2_build_frame_info(), dwarf2_build_psymtabs(), dwarf2_has_info(), error(), find_linenos(), free_pending_blocks(), objfile::global_psymbols, init_minimal_symbol_collection(), init_psymbol_list(), init_stringtab(), install_minimal_symbols(), make_cleanup(), make_cleanup_discard_minimal_symbols(), coff_symfile_info::max_lineno_offset, coff_symfile_info::min_lineno_offset, name, objfile::obfd, objfile_name(), objfile::objfile_obstack, perror_with_name(), really_free_pendings(), scan_xcoff_symtab(), SEEK_SET, psymbol_allocation_list::size, size, objfile::static_psymbols, symfile_bfd, coff_symfile_info::symtbl, coff_symfile_info::symtbl_num_syms, and XCOFF_DATA.
|
static |
Definition at line 1905 of file xcoffread.c.
References buildsym_new_init(), and stabsread_new_init().
|
static |
Definition at line 968 of file xcoffread.c.
References _, complaint(), objfile::obfd, symfile_complaints, symnum, this_symtab_objfile, and XCOFF_DATA.
Referenced by scan_xcoff_symtab(), and xcoff_read_symtab().
|
static |
Definition at line 1816 of file xcoffread.c.
References buildsym_init(), partial_symtab::dependencies, do_cleanups(), partial_symtab::filename, fprintf_unfiltered(), fputs_filtered(), gdb_flush(), gdb_stderr, gdb_stdout, info_verbose, make_cleanup(), partial_symtab::number_of_dependencies, printf_filtered(), partial_symtab::read_symtab_private, read_xcoff_symtab(), partial_symtab::readin, really_free_pendings(), stabsread_init(), and wrap_here().
Referenced by xcoff_read_symtab().
|
static |
Definition at line 1869 of file xcoffread.c.
References fprintf_unfiltered(), gdb_flush(), gdb_stderr, gdb_stdout, info_verbose, next_symbol_text_func, printf_filtered(), scan_file_globals(), xcoff_next_symbol_text(), and xcoff_psymtab_to_symtab_1().
Referenced by xcoff_start_psymtab().
|
static |
Definition at line 284 of file xcoffread.c.
References find_targ_sec_arg::bfd_sect, find_targ_sec(), objfile::obfd, find_targ_sec_arg::objfile, find_targ_sec_arg::resultp, SECT_OFF_TEXT, and find_targ_sec_arg::targ_index.
Referenced by secnum_to_bfd_section(), and secnum_to_section().
|
static |
Definition at line 2013 of file xcoffread.c.
References deduce_language_from_filename(), symloc::first_symnum, objfile::objfile_obstack, psymtab_language, partial_symtab::read_symtab, partial_symtab::read_symtab_private, start_psymtab_common(), and xcoff_read_symtab().
Referenced by scan_xcoff_symtab().
|
static |
Definition at line 1938 of file xcoffread.c.
References dwarf2_free_objfile(), and xfree().
|
static |
Definition at line 1918 of file xcoffread.c.
References objfile::flags, OBJF_REORDERED, and xcoff_objfile_data_key.
|
static |
Definition at line 3042 of file xcoffread.c.
References default_symfile_offsets(), objfile::num_sections, objfile::obfd, objfile::sect_index_bss, objfile::sect_index_data, objfile::sect_index_rodata, objfile::sect_index_text, objfile::sections, and obj_section::the_bfd_section.
initialize_file_ftype _initialize_xcoffread |
|
static |
Definition at line 112 of file xcoffread.c.
Referenced by aix_process_linenos(), and read_xcoff_symtab().
|
static |
Definition at line 157 of file xcoffread.c.
|
static |
Definition at line 103 of file xcoffread.c.
Referenced by process_xcoff_symbol(), and read_xcoff_symtab().
|
static |
Definition at line 2003 of file xcoffread.c.
Referenced by xcoff_end_psymtab().
|
static |
Definition at line 116 of file xcoffread.c.
Referenced by read_xcoff_symtab().
|
static |
Definition at line 538 of file xcoffread.c.
Referenced by record_include_begin(), and record_include_end().
|
static |
Definition at line 536 of file xcoffread.c.
Referenced by process_linenos(), record_include_begin(), and record_include_end().
|
static |
Definition at line 537 of file xcoffread.c.
Referenced by allocate_include_entry().
|
static |
Definition at line 535 of file xcoffread.c.
|
static |
Definition at line 126 of file xcoffread.c.
Referenced by read_symbol(), read_symbol_lineno(), read_xcoff_symtab(), and scan_xcoff_symtab().
|
static |
Definition at line 85 of file xcoffread.c.
Referenced by scan_xcoff_symtab(), and xcoff_start_psymtab().
|
static |
Definition at line 962 of file xcoffread.c.
|
static |
Definition at line 950 of file xcoffread.c.
Referenced by process_xcoff_symbol().
|
static |
Definition at line 954 of file xcoffread.c.
Referenced by process_xcoff_symbol().
|
static |
Definition at line 105 of file xcoffread.c.
Referenced by read_symbol_lineno(), and xcoff_initial_scan().
|
static |
Definition at line 958 of file xcoffread.c.
|
static |
Definition at line 609 of file xcoffread.c.
Referenced by enter_line_range(), read_symbol_lineno(), and xcoff_next_symbol_text().
|
static |
Definition at line 606 of file xcoffread.c.
|
static |
Definition at line 58 of file xcoffread.c.
Referenced by _initialize_xcoffread(), and xcoff_symfile_init().
Definition at line 3081 of file xcoffread.c.