Skip to content
Snippets Groups Projects
  • David Faust's avatar
    36774cec
    ctf: use pointers instead of IDs internally · 36774cec
    David Faust authored
    This patch replaces all inter-type references in the ctfc internal data
    structures with pointers, rather than the references-by-ID which were
    used previously.
    
    A couple of small updates in the BPF backend are included to make it
    compatible with the change.
    
    This change is only to the in-memory representation of various CTF
    structures to make them easier to work with in various cases.  It is
    outwardly transparent; there is no change in emitted CTF.
    
    gcc/
    	* btfout.cc (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines to
    	include/btf.h.
    	(btf_dvd_emit_preprocess_cb, btf_emit_preprocess)
    	(btf_dmd_representable_bitfield_p, btf_asm_array, btf_asm_varent)
    	(btf_asm_sou_member, btf_asm_func_arg, btf_init_postprocess):
    	Adapt to structural changes in ctf_* structs.
    	* ctfc.h (struct ctf_dtdef): Add forward declaration.
    	(ctf_dtdef_t, ctf_dtdef_ref): Move typedefs earlier.
    	(struct ctf_arinfo, struct ctf_funcinfo, struct ctf_sliceinfo)
    	(struct ctf_itype, struct ctf_dmdef, struct ctf_func_arg)
    	(struct ctf_dvdef): Use pointers instead of type IDs for
    	references to other types and use typedefs where appropriate.
    	(struct ctf_dtdef): Add ref_type member.
    	(ctf_type_exists): Use pointer instead of type ID.
    	(ctf_add_reftype, ctf_add_enum, ctf_add_slice, ctf_add_float)
    	(ctf_add_integer, ctf_add_unknown, ctf_add_pointer)
    	(ctf_add_array, ctf_add_forward, ctf_add_typedef)
    	(ctf_add_function, ctf_add_sou, ctf_add_enumerator)
    	(ctf_add_variable): Likewise. Return pointer instead of ID.
    	(ctf_lookup_tree_type): Return pointer to type instead of ID.
    	* ctfc.cc: Analogous changes.
    	* ctfout.cc (ctf_asm_type, ctf_asm_slice, ctf_asm_varent)
    	(ctf_asm_sou_lmember, ctf_asm_sou_member, ctf_asm_func_arg)
    	(output_ctf_objt_info): Adapt to changes.
    	* dwarf2ctf.cc (gen_ctf_type, gen_ctf_void_type)
    	(gen_ctf_unknown_type, gen_ctf_base_type, gen_ctf_pointer_type)
    	(gen_ctf_subrange_type, gen_ctf_array_type, gen_ctf_typedef)
    	(gen_ctf_modifier_type, gen_ctf_sou_type, gen_ctf_function_type)
    	(gen_ctf_enumeration_type, gen_ctf_variable, gen_ctf_function)
    	(gen_ctf_type, ctf_do_die): Likewise.
    	* config/bpf/btfext-out.cc (struct btf_ext_core_reloc): Use
    	pointer instead of type ID.
    	(bpf_core_reloc_add, bpf_core_get_sou_member_index)
    	(output_btfext_core_sections): Adapt to above changes.
    	* config/bpf/core-builtins.cc (process_type): Likewise.
    
    include/
    	* btf.h (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines here,
    	from gcc/btfout.cc.
    36774cec
    History
    ctf: use pointers instead of IDs internally
    David Faust authored
    This patch replaces all inter-type references in the ctfc internal data
    structures with pointers, rather than the references-by-ID which were
    used previously.
    
    A couple of small updates in the BPF backend are included to make it
    compatible with the change.
    
    This change is only to the in-memory representation of various CTF
    structures to make them easier to work with in various cases.  It is
    outwardly transparent; there is no change in emitted CTF.
    
    gcc/
    	* btfout.cc (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines to
    	include/btf.h.
    	(btf_dvd_emit_preprocess_cb, btf_emit_preprocess)
    	(btf_dmd_representable_bitfield_p, btf_asm_array, btf_asm_varent)
    	(btf_asm_sou_member, btf_asm_func_arg, btf_init_postprocess):
    	Adapt to structural changes in ctf_* structs.
    	* ctfc.h (struct ctf_dtdef): Add forward declaration.
    	(ctf_dtdef_t, ctf_dtdef_ref): Move typedefs earlier.
    	(struct ctf_arinfo, struct ctf_funcinfo, struct ctf_sliceinfo)
    	(struct ctf_itype, struct ctf_dmdef, struct ctf_func_arg)
    	(struct ctf_dvdef): Use pointers instead of type IDs for
    	references to other types and use typedefs where appropriate.
    	(struct ctf_dtdef): Add ref_type member.
    	(ctf_type_exists): Use pointer instead of type ID.
    	(ctf_add_reftype, ctf_add_enum, ctf_add_slice, ctf_add_float)
    	(ctf_add_integer, ctf_add_unknown, ctf_add_pointer)
    	(ctf_add_array, ctf_add_forward, ctf_add_typedef)
    	(ctf_add_function, ctf_add_sou, ctf_add_enumerator)
    	(ctf_add_variable): Likewise. Return pointer instead of ID.
    	(ctf_lookup_tree_type): Return pointer to type instead of ID.
    	* ctfc.cc: Analogous changes.
    	* ctfout.cc (ctf_asm_type, ctf_asm_slice, ctf_asm_varent)
    	(ctf_asm_sou_lmember, ctf_asm_sou_member, ctf_asm_func_arg)
    	(output_ctf_objt_info): Adapt to changes.
    	* dwarf2ctf.cc (gen_ctf_type, gen_ctf_void_type)
    	(gen_ctf_unknown_type, gen_ctf_base_type, gen_ctf_pointer_type)
    	(gen_ctf_subrange_type, gen_ctf_array_type, gen_ctf_typedef)
    	(gen_ctf_modifier_type, gen_ctf_sou_type, gen_ctf_function_type)
    	(gen_ctf_enumeration_type, gen_ctf_variable, gen_ctf_function)
    	(gen_ctf_type, ctf_do_die): Likewise.
    	* config/bpf/btfext-out.cc (struct btf_ext_core_reloc): Use
    	pointer instead of type ID.
    	(bpf_core_reloc_add, bpf_core_get_sou_member_index)
    	(output_btfext_core_sections): Adapt to above changes.
    	* config/bpf/core-builtins.cc (process_type): Likewise.
    
    include/
    	* btf.h (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines here,
    	from gcc/btfout.cc.