Skip to content
  • Joel Brobecker's avatar
    Revert the entire VLA series. · 6b662e19
    Joel Brobecker authored
    This reverts the following patch series, as they cause some regresssions.
    
    commit 37c1ab67
    type: add c99 variable length array support
    
    	gdb/
    	* dwarf2loc.c (dwarf2_locexpr_baton_eval): New function.
    	(dwarf2_evaluate_property): New function.
    	* dwarf2loc.h (dwarf2_evaluate_property): New function prototype.
    	* dwarf2read.c (attr_to_dynamic_prop): New function.
    	(read_subrange_type): Use attr_to_dynamic_prop to read high bound
    	attribute.
    	* gdbtypes.c: Include dwarf2loc.h.
    	(is_dynamic_type): New function.
    	(resolve_dynamic_type): New function.
    	(resolve_dynamic_bounds): New function.
    	(get_type_length): New function.
    	(check_typedef): Use get_type_length to compute type length.
    	* gdbtypes.h (TYPE_HIGH_BOUND_KIND): New macro.
    	(TYPE_LOW_BOUND_KIND): New macro.
    	(is_dynamic_type): New function prototype.
    	* value.c (value_from_contents_and_address): Call resolve_dynamic_type
    	to resolve dynamic properties of the type. Update comment.
    	* valops.c (get_value_at, value_at, value_at_lazy): Update comment.
    
    commit 26cb189f
    vla: enable sizeof operator to work with variable length arrays
    
    	gdb/
    	* eval.c (evaluate_subexp_for_sizeof) <OP_VAR_VALUE>: If the type
    	passed to sizeof is dynamic evaluate the argument to compute the length.
    
    commit 04b19544
    vla: enable sizeof operator for indirection
    
    	gdb/
    	* eval.c (evaluate_subexp_for_sizeof) <UNOP_IND>: Create an indirect
    	value and retrieve the dynamic type size.
    
    commit bcd629a4
    vla: update type from newly created value
    
    	gdb/
    	* ada-lang.c (ada_value_primitive_packed_val): Re-fetch type from value.
    	(ada_template_to_fixed_record_type_1): Likewise.
    	(ada_to_fixed_type_1): Likewise.
    	* cp-valprint.c (cp_print_value_fields_rtti): Likewise.
    	(cp_print_value): Likewise.
    	* d-valprint.c (dynamic_array_type): Likewise.
    	* eval.c (evaluate_subexp_with_coercion): Likewise.
    	* findvar.c (address_of_variable): Likewise.
    	* jv-valprint.c (java_value_print): Likewise.
    	* valops.c (value_ind): Likewise.
    	* value.c (coerce_ref): Likewise.
    
    commit b86138fb
    vla: print "variable length" for unresolved dynamic bounds
    
    	gdb/
    	* c-typeprint.c (c_type_print_varspec_suffix): Added
    	check for not yet resolved high bound. If unresolved, print
    	"variable length" string to the console instead of random
    	length.
    
    commit e1969afb
    vla: support for DW_AT_count
    
    	gdb/
    	* dwarf2read.c (read_subrange_type): Convert DW_AT_count to a dynamic
    	property and store it as the high bound and flag the range accordingly.
    	* gdbtypes.c (resolve_dynamic_bounds): If range is flagged as
    	RANGE_UPPER_BOUND_IS_COUNT assign low + high - 1 as the new high bound.
    	* gdbtypes.h (enum range_flags): New enum.
    	(struct range_bounds): Add flags member.
    
    commit 92b09522
    vla: resolve dynamic bounds if value contents is a constant byte-sequence
    
    	gdb/
    	* findvar.c (default_read_var_value): Resolve dynamic bounds if location
    	points to a constant blob.
    
    commit 3bce8237
    vla: evaluate operand of sizeof if its type is a vla
    
    	gdb/
    	* eval.c (evaluate_subexp_for_sizeof): Add enum noside argument.
    	(evaluate_subexp_standard): Pass noside argument.
    	(evaluate_subexp_for_sizeof) <BINOP_SUBSCRIPT>: Handle subscript case
    	if noside equals EVAL_NORMAL. If the subscript yields a vla type
    	re-evaluate subscript operation with EVAL_NORMAL to enable sideffects.
    	* gdbtypes.c (resolve_dynamic_bounds): Mark bound as evaluated.
    	* gdbtypes.h (enum range_flags): Add RANGE_EVALUATED case.
    
    	gdb/testsuite
    
    	* gdb.base/vla-sideeffect.c: New file.
    	* gdb.base/vla-sideeffect.exp: New file.
    
    commit 504f3432
    test: cover subranges with present DW_AT_count attribute
    
    	gdb/testsuite/
    	* gdb.dwarf2/count.exp: New file.
    
    commit 1a237e0e
    test: multi-dimensional c99 vla.
    
    	gdb/testsuite/
    	* gdb.base/vla-multi.c: New file.
    	* gdb.base/vla-multi.exp: New file.
    
    commit 024e13b4
    test: evaluate pointers to C99 vla correctly.
    
    	gdb/testsuite/
    	* gdb.base/vla-ptr.c: New file.
    	* gdb.base/vla-ptr.exp: New file.
    
    commit c8655f75
    test: basic c99 vla tests for C primitives
    
    	gdb/testsuite/
    	* gdb.base/vla-datatypes.c: New file.
    	* gdb.base/vla-datatypes.exp: New file.
    
    commit 58a84dcf
    test: add mi vla test
    
    	gdb/testsuite/
    	* gdb.mi/mi-vla-c99.exp: New file.
    	* gdb.mi/vla.c: New file.
    6b662e19