8 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Peter Schauer
|
e7e98487ba |
* dwarf2read.c (dwarf2_linkage_name): New function to get
the linkage name of a die from DW_AT_MIPS_linkage_name or DW_AT_name. (read_func_scope, dwarf2_add_field, dwarf2_add_member_fn, new_symbol): Use it instead of accessing DW_AT_name. (read_partial_die): Use DW_AT_MIPS_linkage name as name of the partial die if present. (dwarf2_add_member_fn): Make a copy of physname on the type obstack. |
||
Peter Schauer
|
5499537344 |
* dwarf2read.c: Replace integral tag, name and form fields in
internal structure definitions with the corresponding enumeration types from dwarf2.h. Add default cases to switches on enumerations where appropriate. Make quoting of string arguments in complaint messages consistent. Check for NULL returns from DW_STRING. (struct partial_die_info): Add sibling and has_type fields, remove unused value field. (DW_*): Move access macro definitions near the definition of the attribute structure. (struct field_info): New structure to pass information about fields and member functions between die processing routines. (dwarf2_build_psymtabs_hard): Set cu_header_offset. (scan_partial_symbols): Do not enter DW_TAG_subprogram dies into the partial symbol table if the DW_AT_*_pc attributes are missing. Add file scope base type definitions to the partial symbol table. Skip over child dies if the die has a sibling attribute. (add_partial_symbol): Enter global variables with type attributes and without location descriptors into the partial symbol table. Store value of DW_TAG_variable dies in the partial symbol table. Do not enter global variables into the minimal symbol table. Add base type definitions to the partial symbol table. (psymtab_to_symtab_1): Use dwarf2_get_pc_bounds to determine highpc. (process_die): Move check for DW_AT_low_pc to read_func_scope. Add a typedef symbol for base type definitions to the symbol table. Ignore DW_TAG_inlined_subroutine tags for now. (read_file_scope): Use dwarf2_get_pc_bounds to determine pc bounds. (read_func_scope, read_lexical_block_scope): Use dwarf2_get_pc_bounds to determine pc bounds, ignore dies with invalid bounds. (dwarf2_get_pc_bounds): New routine to extract and validate the DW_AT_*_pc attributes of a die. (dwarf2_add_field, dwarf2_attach_fields_to_type, skip_member_fn_name, dwarf2_add_member_fn, dwarf2_attach_fn_fields_to_type): New functions to handle fields and member functions. (read_structure_scope): Rewritten to use them. (read_array_type): Renamed from dwarf_read_array_type. Default upper array bound to describe an array with unspecified length. Create array types in backwards order, as dwarf2 puts out the array dimensions from left to right. (read_subroutine_type): Handle DW_TAG_unspecified_parameters, DW_AT_artificial and DW_AT_prototyped. (read_base_type): Make an unsigned type for DW_ATE_boolean. Pass objfile to dwarf_base_type. (read_partial_die): Use read_attribute to read in the attributes. Handle DW_AT_sibling and DW_AT_type. Follow references when determining DW_AT_name and DW_AT_external attributes of the die. Validate DW_AT_*_pc attributes. (read_full_die): Use read_attribute to read in the attributes. (read_attribute): New function to read an attribute described by an abbreviated attribute. (new_symbol): Relocate symbol value for DW_TAG_label with baseaddr. Do not set SYMBOL_VALUE_ADDRESS for DW_TAG_subprogram, SYMBOL_BLOCK_VALUE for the symbol will be set later by finish_block. Change symbol class for global variables with a zero valued location descriptor to LOC_UNRESOLVED. Handle DW_AT_const_value attributes for DW_TAG_variable, DW_TAG_formal_parameter and DW_TAG_enumerator. Build a typedef symbol for DW_TAG_base_type. (dwarf2_const_value): New routine to copy a constant value from an attribute to a symbol. (dwarf_base_type): Use passed in objfile, not current_objfile when calling dwarf2_fundamental_type. (dump_die): Use DW_* accessor macros to access values of attributes. (decode_locdesc): Handle DW_OP_plus_uconst. |
||
Peter Schauer
|
0db3fe94c3 |
Add support for Irix 6.2 native O32 and N32 ABI.
* config.in, configure.in, configure: Check for <objlist.h>. * configure.tgt: Handle mips*-sgi-irix6* like irix5 for now. * cp-valprint.c (cp_print_value_fields): Use SYMBOL_VALUE_ADDRESS instead of SYMBOL_BLOCK_VALUE to get the address of a static member. * dwarf2read.c: Turn warnings and recoverable errors into complaints, add new complaints where appropriate. gcc -Wall cleanup. (struct line_head): Change line_base from char to int to avoid problems with compilers whose plain char is represented by an unsigned char. (struct partial_die_info): Add is_declaration field. (dwarf2_tmp_obstack): New obstack for allocating temporary storage used during symbol reading. (cu_header_offset): New variable for resolving relative reference dies. (optimized_out, basereg, islocal, frame_base_reg, frame_base_offset): New interface variables for decode_locdesc. (struct dwarf2_pinfo): New structure for communication between psymtab and symtab reading, passed via pst->read_symtab_private. (dwarf2_has_info, dwarf2_build_psymtabs): Accept objects files without line number sections. (dwarf2_build_psymtabs_hard): Initialize temporary obstack for symbol reading. Allocate and initialize pst->read_symtab_private. Relocate pst->textlow and pst->texthigh with baseaddr. (scan_partial_symbols): Do not add DW_AT_declaration symbols to the partial symbol table. Add file scope enumerator symbols to the partial symbol table. Fix typo in highpc computation. If we didn't find a lowpc, set it to highpc to avoid complaints from `maint check. (add_partial_symbol): Relocate symbol values with baseaddr. Add static DW_TAG_subprogram and DW_TAG_variable symbols to the minimal symbol table. Obtain symbol values for DW_TAG_variable symbols from the location descriptor, skip symbols with missing location desciptors. Skip symbols for aggregate types without children. Handle enumerator symbols. (dwarf2_psymtab_to_symtab): Issue symbol reading message if verbose. (psymtab_to_symtab_1): Set local variables from pst->read_symtab_private, set cu_header_offset and baseaddr. Initialize temporary obstack for symbol reading, initialize buildsym and add a cleanup to really_free_pendings. Relocate highpc with baseaddr when calling end_symtab. If the compilation is from a C file generated by language preprocessors, do not set the symtab language if it was already deduced by start_subfile. Removed verbose sorting symbol table message. (process_die): Handle DW_TAG_ptr_to_member_type and DW_TAG_reference_type. Use read_subroutine_type to get the function type for DW_TAG_subprogram before calling read_func_scope. (read_file_scope): Initialize file name to <unknown>, start_subfile expects a non-NULL name. If we didn't find a lowpc, set it to highpc to avoid complaints from finish_symbol. Relocate lowpc and highpc with baseaddr. Get rid of Irix6.2 native cc compile machine prefix in comp_dir. Zero out ftypes for each new compilation unit (may be different language or different objfile). Accept compilation units without line number information, pass comp_dir to decode_lines. (read_func_scope): Initialize function name to <unknown> to avoid core dumps when DW_AT_name is missing. Relocate lowpc and highpc with baseaddr. Handle DW_AT_frame_base, keep result for DW_OP_fbreg operations. Pass function type to new_symbol. (read_lexical_block_scope): Relocate lowpc and highpc with baseaddr. (read_structure_scope): Set TYPE_TAG_NAME, not TYPE_NAME. Handle DW_TAG_class_type. Copy fields to type_obstack, release temporary storage for fields. Don't add symbol if die is a stub die and has no children. Handle C++ static member fields. (read_enumeration): Set TYPE_TAG_NAME, not TYPE_NAME. Copy fields to type_obstack, release temporary storage for fields. Let new_symbol handle the symbol creation for enumerators instead of handcrafting a symbol. Determine signedness of enum type from enumerators. (dwarf_read_array_type): Handle variable length arrays. Use lookup_pointer_type instead of handcrafting a type. Create array type only if a DW_TAG_subrange_type was found. (read_tag_pointer_type, read_tag_reference_type): Use lookup_pointer_type and lookup_reference_type instead of handcrafting a type. (read_tag_ptr_to_member_type): New function to handle DW_TAG_ptr_to_member_type. (read_subroutine_type): Handle parameter dies. Use lookup_function_type instead of handcrafting a type. (read_typedef): Allocate a TYPE_CODE_TYPEDEF type for the typedef. (read_base_type): If the type has a name, use init_type to create a new type instead of second guessing a fundamental type. (read_comp_unit): Reset die reference table before building a new one. (dwarf2_read_section): Read section contents into psymbol_obstack. (dwarf2_read_abbrevs): Handle unterminated abbreviations for a compile unit gracefully. (read_partial_die): Zero partial die before reading its info. Handle DW_AT_declaration. Fix typo in handling of DW_FORM_block4. (read_full_die): Fix typo in handling of DW_FORM_block4. (read_1_signed_byte, read_2_signed_bytes, read_4_signed_bytes): New routines to get signed values from a buffer. (read_n_bytes, read_string): Allocate storage from the temporary obstack. If the host char size permits it, return pointer to buffer instead of allocating storage. (set_cu_language): Handle DW_LANG_Mips_Assembler. (dwarf_attr): Return NULL if reference die for DW_AT_specification or DW_AT_abstract_origin die is not found. (record_minimal_symbol): Removed, replaced with a direct call to prim_record_minimal_symbol, it now handles saving the string itself. (convert_locdesc): Removed, partial symtab reading now uses decode_locdesc. (dwarf_attr): Use dwarf2_get_ref_die_offset to get the absolute offset for the die reference. (dwarf_decode_lines): Complain if the line section info is missing. Use read_1_signed_byte to extract lh.line_base to avoid problems with compilers whose plain char is represented by an unsigned char. Add cleanups for allocated temporary storage. Start a subfile for the first file in the state machine. Fix off by one problem with dirs.dirs access. Use comp_dir when directory index is 0. Support multiple sequences (from Jason Merrill <jason@cygnus.com>). (dwarf2_start_subfile): Try to keep line numbers from identical absolute and relative file names in a common subfile. (new_symbol): Allocate symbol and symbol name on the symbol_obstack. Set SYMBOL_LINE from DW_AT_decl_line if present. Set SYMBOL_TYPE from passed type if not NULL. Change DW_TAG_variable symbol types with missing type entries to a sensible type. Handle optimized_out, offreg and islocal storage classes. Add external symbols with type information whose address isn't known as LOC_UNRESOLVED symbols. Synthesize typedefs for C++ classes, structs, unions and enumerations. Handle DW_TAG_enumerator symbols, complain for unrecognized symbol tags. (die_type): A missing DW_AT_type represents a void type. Use dwarf2_get_ref_die_offset to get the absolute offset for the die reference. (die_containing_type): New function to build type from DW_AT_containing_type attribut. (read_type_die): Handle DW_TAG_ptr_to_member_type. Treat DW_TAG_subprogram like DW_TAG_subroutine_type. (dwarf_base_type): Fix typo with creation of FT_UNSIGNED_SHORT fundamental type. (create_name): Removed, symbol name allocation is now done in new_symbol. (dump_die): Use print_address_numeric to print a CORE_ADDR. (dwarf2_empty_die_ref_table): New function to clear the die reference table. (dwarf2_get_ref_die_offset): New function to get the absolute die offset from a die reference attribute. (decode_locdesc): Complete rewrite using a stack, code mostly borrowed from dwarfread.c:locval. (dwarf_alloc_type): Removed, replaced by direct calls to alloc_type. (dwarf_alloc_block): Allocate block on temporary obstack. * elfread.c (elf_symtab_read): When handling Irix dynamic symbols, skip section name symbols and relocate all others. (elf_symfile_read): Build dwarf2 psymtab even if offset is non-zero. * irix5-nat.c (fetch_core_registers): Handle core_reg_sect from N32 executables. Call registers_fetched after extracting the registers. (obj_list_variant, struct link_map, LM_OFFSET, LM_ADDR): New definitions to enable support of O32 and N32 format objlists. (struct so_list): New members offset, so_name and lmstart to eliminate dependencies from the objlist format used. (solib_map_sections, symbol_add_stub, solib_add, info_sharedlibrary_command, solib_address, clear_solib): Use so_name and LM_OFFSET. (first_link_map_member): Rewrite to enable support of O32 and N32 format objlists. (next_link_map_member, xfer_link_map_member): New functions to support O32 and N32 format objlists. (find_solib): Use first_link_map_member, next_link_map_member and xfer_link_map_member. (solib_create_inferior_hook): Use TARGET_SIGNAL_* instead of host signal numbers. * mdebugread.c (parse_partial_symbols, handle_psymbol_enumerators): Pass CORE_ADDR variant to add_psymbol_to_list. * mips-tdep.c (heuristic_proc_desc): Stop examining the prologue if we encounter a positive stack adjustment. Handle `move $30,$sp'. Handle `sd reg,offset($sp)' for 32 bit ABIs. * symmisc.c (dump_msymbols, print_partial_symbols): Use print_address_numeric to print a SYMBOL_VALUE_ADDRESS. (dump_symtab): Print compilation directory if it is not NULL. * valops.c (search_struct_field, value_struct_elt_for_reference): Use SYMBOL_VALUE_ADDRESS instead of SYMBOL_BLOCK_VALUE to get the address of a static member. |
||
Jason Merrill
|
e61a754e39 |
Sun Oct 6 22:43:06 1996 Jason Merrill <jason@yorick.cygnus.com>
* dwarf2read.c (read_tag_reference_type): New fn. (read_type_die): Call it. (dwarf_attr): Also look in the DIEs referred to by specification or abstract_origin attributes. |
||
Stu Grossman
|
8501c74270 |
* defs.h: Define CONST_PTR as blank if compiling with Microsoft
C, else it's `const'. * c-lang.c c-lang.h ch-lang.c f-lang.c language.c m2-lang.c scm-lang.c: Microsoft C can't hack const pointers. Use CONST_PTR macro instead. * configure configure.in defs.h: Use AC_C_CONST to figure out if the compiler supports const. Gets rid of some cruft in defs.h. * dwarf2read.c: <string.h> -> "gdb_string.h" * remote-sim.c: Add prototypes. Fix call to gdbsim_kill. * sparcl-tdep.c (download): Add prototypes to write_routine and start_routine args. * mswin/gdbwin.c: Don't include both varargs.h AND stdarg.h. Get rid of varargs.h Include string.h. * (gdbwin_update gdbwin_fputs regs_changed_f bpt_changed_f update): Fix prototypes, fix calls. * (update): Return value for catch_errors. * (run_execute_command togdb_command_from_tty togdb_command): Cleanup catching of errors from calls to execute_command. Also, dup command string to avoid modifying const strings. * (togdb_breakinfo_i_init togdb_breakinfo_i_next): Use 0 instead of NULL when see if b->address isn't set. * (bi_disable_bpt bi_enable_bpt bi_delete_all bi_delete_breakpoint): Add arg to calls to update. * (gui_command): Add prototype. * (mswin_query): Fix prototype. * (_initialize_gdbwin): Dup string to avoid modifying const. * (info_path togdb_get_info_path): Remove const from decls cuz this can't be const (it points at malloc'ed memory). * (togdb_searchpath): Remove const from path. Dup string to avoid modifying const strings. * rindex -> strrchr. * (gdbwin_list_symbols): Regexp param is const. * Fix lots of refs to psymtabs to deref correct pointers. * (togdb_set_breakpoint_sal): Call set_breakpoint_sal with sal, not &sal. * mswin/gdbwin.h (togdb_searchpath togdb_get_info_path toget_set_info_path): Fix prototypes to match reality. * mswin/gui.cpp: Define _beginthreadex and _endthreadex routines with proper prototypes. * mswin/iface.cpp (gdbwin_fputs): Define with correct number of args. * mswin/ser-win32s.c: Fix defs of min and max. * mswin/serdll32.c (OpenComm16): Make cbInQueue and cbOutQueue be USHORT. * (WriteComm16): Change lpBug from LPVOID to LPCSTR. * mswin/serdll32.h: Fix prototypes for OpenComm16 and WriteComm16. |
||
Stu Grossman
|
9e77e83d30 |
* dwarf2read.c dwarfread.c exec.c infcmd.c infrun.c main.c
mdebugread.c os9kread.c source.c top.c utils.c: Don't include param.h or sys/file.h (or unistd.h in some cases). * defs.h exec.c inflow.c remote-array.c remote-e7000.c sparcl-tdep.c terminal.h utils.c: Replace all occurances of __WIN32__, WINGDB, WIN32, etc... with _WIN32. * main.c: Remove #ifndef WINGDB around option processing. Fix bug with passing argc==0 and argv==NULL to getopt. * (main) Remove calls to access() before source_command. Let soure_command handle access errors. * maint.c (maintenance_dump_me): #ifdef out for _WIN32. * symtab.c (operator_chars): Make this global for wingdb. * top.c (disconnect): #ifdef out for _WIN32. * (source_command): If got an error and from_tty, then call print error, else just return quietly. * utils.c (fatal_dump_core): Can't kill ourselves under windows. Just exit. * (pollquit notice_quit): #ifdef out stuff that doesn't exist under windows. |
||
Fred Fish
|
9422fadb91 |
* dwarf2read.c (struct filenames): Change internal "struct file"
to "struct fileinfo" to avoid conflict with "struct file" in <sys/file.h> on HPUX and Solaris. |
||
Stan Shebs
|
fcf0554956 |
* dwarf2read.c: New file, DWARF 2 reader originally contributed by
Brent Benson, with additions by Gary Funck and Jerry Kreuscher. * Makefile.in (COMMON_OBS): Add dwarf2read.o. (SFILES): Add dwarf2read.c. (dwarf2read.o): Add build rule. * symfile.h (dwarf2_has_info, dwarf2_build_psymtabs): Declare exported functions. * elfread.c (elf_symfile_read): Call them. (elf_symtab_read) [HARRIS_TARGET]: Skip some special symbols. |