Commit graph

23 commits

Author SHA1 Message Date
Ian Lance Taylor
5317d6f945 * ieee.c (ieee_array_type): Remember the correct size. 1996-10-28 22:12:02 +00:00
Ian Lance Taylor
9720a1a70f * ieee.c (ieee_finish_compilation_unit): Permit coalescing ranges
that are up to 0x1000 bytes apart, not just 64.
	(ieee_add_bb11_blocks): Don't bother to emit a BB11 that is less
	than 0x100 bytes.
	(ieee_lineno): Only emit line numbers that are less than
	info->highaddr.
1996-10-28 22:01:06 +00:00
Ian Lance Taylor
59f2e5dbeb * ieee.c (struct ieee_defined_enum): Add defined field.
(ieee_enum_type): If the enum tag has been seen before but not
	defined, reuse the same type index, and define it.
	(ieee_tag_type): If this enum has not been defined, add an
	undefined entry to the list of enums.
PR 10946.
1996-10-25 20:57:15 +00:00
Ian Lance Taylor
81530f93ef * ieee.c (struct ieee_write_type): Add reflocalp field.
(ieee_pointer_type): Set reflocalp after pushing type.
	(ieee_function_type): If reflocalp is set, make this type local.
	(ieee_range_type, ieee_array_type, ieee_set_type): Likewise.
	(ieee_const_type, ieee_volatile_type): Likewise.
	(ieee_struct_field, ieee_class_baseclass): Likewise.
PR 10638.
1996-09-16 21:45:01 +00:00
Ian Lance Taylor
0dcbbb6029 * ieee.c (struct ieee_info): Add global_types field.
(parse_ieee_bb): When starting a BB1, initialize the types field
	to the global_types field.
	(parse_ieee_be): When ending a BB2, copy the types field to the
	global_types field.
1996-09-16 19:33:04 +00:00
Ian Lance Taylor
e820a5b09e * ieee.c (struct ieee_handle): Add fields complex_float_index and
complex_double_index.
	(ieee_complex_type): Cache type index in complex_float_index and
	complex_double_index, depending upon size.  Set size on type stack
	to size * 2.

	* ieee.c (ieee_empty_type): Use builtin_unknown, not 0.
	(ieee_void_type): Use builtin_void, not 1.

	* ieee.c (parse_ieee_ty): Handle 'V' type code.
	(parse_ieee_atn): Don't require two numbers for type 10.

	* ieee.c (parse_ieee_be): Add one to offset at end of function or
	block.

	* ieee.c (struct ieee_block): Add field skip.
	(parse_ieee_bb): Don't call debug_record_function for __XRYCPP
	function, and set skip field.
	(parse_ieee_be): Don't call debug_end_function if skip is set.
1996-03-20 21:49:31 +00:00
Ian Lance Taylor
6ae6090e22 * stabs.c (parse_stab_range_type): A complex type is defined as a
subrange of itself with the high bound zero.
	* ieee.c (ieee_complex_type): Don't crash on sizes of 12 or 16.
1996-03-18 23:06:29 +00:00
Ian Lance Taylor
efda824b08 * ieee.c (ieee_write_undefined_tag): Switch to global_types even
if it is not empty.
	(ieee_tag_type): For an enum, look through info->enums.
1996-03-12 19:33:31 +00:00
Ian Lance Taylor
90e5f484e5 * ieee.c (ieee_regno_to_genreg): Convert register numbers for m68k
and i960.
	(ieee_genreg_to_regno): Likewise.
1996-02-14 20:13:13 +00:00
Ian Lance Taylor
fe1dc0a656 * ieee.c: Extensive changes to write code to put types in the
global type block when possible, to output ranges for all memory
	occupied by the module, and to improve efficiency.
1996-02-12 19:41:47 +00:00
Ian Lance Taylor
1dcea5a7df * ieee.c (ieee_start_compilation_unit): Clear modified and
modified_alloc fields of info.
1996-02-07 19:20:35 +00:00
Ian Lance Taylor
526fed067e * ieee.c (struct ieee_modified_type): Define.
(struct ieee_handle): Add modified and modified_alloc fields.
	(ieee_get_modified_info): New static function.
	(ieee_pointer_type): Cache type index.
	(ieee_const_type): Likewise.
	(ieee_volatile_type): Likewise.
1996-01-24 22:51:32 +00:00
Ian Lance Taylor
76e45938c3 * ieee.c (ieee_define_named_type): When creating a tag for an
anonymous struct, copy the name into memory.
	(ieee_tag_type): Likewise.
	* debug.c (debug_write_type): Only check and set id field for an
	unnamed object.
	(debug_write_class_type): Likewise.
1996-01-24 21:10:55 +00:00
Ian Lance Taylor
2466210755 * ieee.c: Various changes to write out types for functions and
references, and to not write out unnecessary function types.
1996-01-24 19:40:21 +00:00
Ian Lance Taylor
74ae0c978d * ieee.c (struct ieee_var): Remove variable field. Add kind
field, and define some enum constants for it.
	(parse_ieee_ty): Set kind field of variable for 'x' and 'X' types.
	(parse_ieee_atn): Make an indirect slot for an external variable,
	although we otherwise don't record it.  Set kind field rather than
	variable field of pvar.
	(ieee_read_cxx_class): Try to get the type of a static member.
	(ieee_read_reference): Check kind field rather than variable
	field.
1996-01-24 17:08:25 +00:00
Ian Lance Taylor
3d2d462907 * ieee.c: Various changes to handle C++ reference types. 1996-01-24 01:26:21 +00:00
Ian Lance Taylor
b96e1ce4f8 * ieee.c: Various changes to write out definitions of C++ classes. 1996-01-23 20:59:46 +00:00
Ian Lance Taylor
4207b304c9 * ieee.c: Extensive changes to pass a single info argument around
in the reading routines, rather than several arguments.  Add code
	to read C++ debugging records.
1996-01-23 00:35:25 +00:00
Ian Lance Taylor
267e52989e * debug.h (struct debug_write_fns): Remove ellipsis_type. Add int
and boolean parameters to function_type.  Add boolean parameter to
	method_type.
	(debug_make_ellipsis_type): Don't declare.
	(debug_make_function_type): Add debug_type * and boolean
	parameters.  Change all callers.
	(debug_make_method_type): Add boolean parameter.  Change all
	callers.
	(debug_get_parameter_types): Add boolean * parameter.  Change all
	callers.
	(debug_get_target_type): Declare.
	* debug.c (struct debug_function_type): Add fields arg_types and
	varargs.
	(struct debug_method_type): Add field varargs.
	(debug_ellipsis_type, ELLIPSIS_P): Remove.
	(debug_make_ellipsis_type): Remove.
	(debug_make_function_type): Add arg_types and varargs parameters.
	(debug_make_method_type): Add varargs parameter.
	(debug_get_parameter_types): Add pvarargs parameter.
	(debug_get_target_type): New function.
	(debug_write_type): In case DEBUG_KIND_FUNCTION, push argument
	types and pass count to function_type.  In DEBUG_KIND_METHOD, use
	a signed int for the count, don't call ellipsis_type, and pass
	varargs to method_type.
	* stabs.c (struct stab_demangle_info): Add varargs field.
	(stab_demangle_argtypes): Add pvarargs parameter.  Change all
	callers.
	(stab_demangle_args): Likewise.
	(stab_demangle_type): In case 'F', pick up argument types.
	* prdbg.c (pr_ellipsis_type): Remove.
	(pr_function_type): Add argcount and varargs parameters.
	(pr_method_type): Add varargs parameter.
	* ieee.c (ieee_ellipsis_type): Remove.
	(ieee_function_type): Add argcount and varargs parameters.
	(ieee_method_type): Add varargs parameter.  Remove most of
	function body, and just call ieee_function_type.
1996-01-19 19:44:00 +00:00
Ian Lance Taylor
07aa1e1b7a * debug.h (enum debug_type_kind): Add DEBUG_KIND_ILLEGAL.
(struct debug_write_fns): Add field ellipsis_type.  Add id
	parameter to start_struct_type, start_class_type, and tag_type.
	(debug_make_ellipsis_type): Declare.
	(debug_find_named_type): Declare.
	(debug_get_type_kind): Declare.
	(debug_get_return_type): Declare.
	(debug_get_parameter_types): Declare.
	(debug_get_fields): Declare.
	(debug_get_field_type): Declare.
	* debug.c (struct debug_handle): Add fields class_id and base_id.
	(struct debug_class_type): Add field id.
	(struct debug_method_variant): Rename argtypes to physname.
	Change all uses.
	(debug_ellipsis_type): New static variable.
	(ELLIPSIS_P): New macro.
	(debug_make_ellipsis_type): New function.
	(debug_make_method_variant): Rename argtypes to physname.
	(debug_make_static_method_variant): Likewise.
	(debug_name_type): Always put types in the global namespace.
	(debug_find_named_type): New function.
	(debug_find_tagged_type): Treat DEBUG_KIND_ILLEGAL specially,
	rather than DEBUG_KIND_VOID.
	(debug_get_real_type): New static function.
	(debug_get_type_kind): New function.
	(debug_get_return_type): New function.
	(debug_get_parameter_types): New function.
	(debug_get_fields): New function.
	(debug_get_field_type): New function.
	(debug_write): Initialize base_id.
	(debug_write_type): Pass new id argument to tag_type.  Handle
	DEBUG_KIND_ILLEGAL.  Use id for	DEBUG_KIND_STRUCT and
	DEBUG_KIND_UNION.  Handle ellipsis for method arguments.
	(debug_write_class_type): Don't dereference kclass if it is NULL.
	Use id.
	* prdbg.c (pr_fns): Add pr_ellipsis_type.
	(pr_ellipsis_type): New static function.
	(pr_pointer_type): If this is a pointer to an array, parenthesize
	it correctly.
	(pr_start_struct_type): Add id parameter.
	(pr_start_class_type): Likewise.
	(pr_tag_type): Likewise.
	(pr_fix_visibility): Add the visibility to the top of the stack,
	not the second element on the stack.
	(pr_struct_field): Pop the stack before calling pr_fix_visibility.
	(pr_class_static_member): Likewise.
	(pr_class_start_method): Don't push a type, just set the method
	name in the type on the top of the stack.
	(pr_class_end_method): Don't pop the stack.
	(pr_class_method_variant): Rename argtypes parameter to physname.
	Append const and volatile rather than prepending them.  Add a
	space after the physname.
	(pr_class_static_method_variant): Likewise.
	* ieee.c (ieee_fns): Add ieee_ellipsis_type.
	(ieee_define_named_type): Use DEBUG_KIND_ILLEGAL rather than
	DEBUG_KIND_VOID.
	(write_ieee_debugging_info): Likewise.
	(ieee_typdef): Likewise.
	(ieee_ellipsis_type): New static function.
	(ieee_start_struct_type): Add id parameter.
	(ieee_start_class_type): Likewise.
	(ieee_tag_type): Likewise.
	(ieee_class_method_variant): Rename name to physname.
	(ieee_class_static_method_variant): Likewise.
1996-01-19 18:03:04 +00:00
Ian Lance Taylor
499452f3cc * ieee.c (ieee_enum_type): Handle an undefined enum. 1996-01-11 17:33:47 +00:00
Ian Lance Taylor
3d01586485 * ieee.c: Add global function write_ieee_debugging_info and a
bunch of static functions and structs used to write out IEEE
	debugging information.
	* budbg.h (write_ieee_debugging_info): Declare.

	* ieee.c (struct ieee_type): Add pslot field.
	(enum builtin_types): Define.
	(ieee_builtin_type): For a pointer, return a pointer to the named
	type.  Use enum values rather than numbers.
	(ieee_alloc_type): New static function.
	(ieee_read_type_index): Use ieee_alloc_type.
	(parse_ieee_bb): Likewise.
	(parse_ieee_ty): Likewise.  Use ieee_builtin_type for array range,
	rather than making a new integer type.  Store the new type in the
	slot, if there is one.
	(parse_ieee_atn): Treat ATN10 as defining a register variable.
	(ieee_regno_to_genreg): Rename from ieee_regno_to_gen.  Change all
	callers.
	(ieee_genreg_to_regno): New static function.
1996-01-08 23:20:00 +00:00
Ian Lance Taylor
f516798679 * ieee.c: New file with code to read IEEE debugging information.
* budbg.h (parse_ieee): Declare.
	* rddbg.c (read_debugging_info): Handle IEEE flavour files.
	(read_ieee_debugging_info): New static function.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add ieee.c.
	(OBJDUMP_OBJS): Add ieee.o.
1996-01-04 21:35:04 +00:00