Ran binary distribution 2.7.2 elf format compiler on three files which compile cleanly on 2.6.3. Each time gpc1 failed with segmentation fault in
comp_object_pointer_types ()
but with dissimilar record structures being compared.
Here is gdb trace of one failure - file is 20000 lines, failure at 8000 lines
er_end_main Away Away_or_both Towards_or_both Towards Direq Single_direq
Makelist Makelistup Duplicate_list Duplicate_node Getnumvalue Getlists Makelistx Makesave Getxset Getxset_from_listarr Find_create_var Add_inconsistency Check_inconsistency Setfalsevar Check_where Partset Makepossle Equalxset Compare_members Compare_lists Listequality String_equality Test_equality Attach_link Patmatch Mesg Ztrim Subs2 Subs3 All_numeric Bnch Bran Create_operator New_link Cut_link Findsubhead Create_sub Buildsub Writej Plusminus Makeset Setpoints Getnum Debug_state Listkill Add_mber_to_list Solution Undoable Remove_member_from_list Add_delete_list Goal Add_data Cleaned_path Add_search Add_variable Highsearch Check_searcFirst_rec New_job_rec First New_job Remove Remove_shuffle Remove_q Remove_search Remove_data Pointing Point_link Pointed_at Setconsistentlink A_link_job Get_link Clear Remove_entry Clear_obsolete Killdata Next_job Killlist Kill_entry Kill_inference Kill_invoc Kill_branch Check_level Adush Check_path Check_out Check_any Check_zero Rate_action List_unlink Breaklink Destroy_constant_list Kill_fun2 Kill_fun3 Another Kill_externalhange_environment Clear_environment Killnet Add_clean Purge_cleanjob_of Add_match Nosearch Cleanupjobs Cleanup Cleanvar Setlinkdata Linksearch t_first_link Uke_out Check_list Link_open Path_open Deadend Reconnoitre Check_paths Contingency_plan Check_tuf Search_for_link Getrange Setvarfmlink Build_list Same_pred Side_link Funcop Symmetric Searches_in Equality Valid Find_search_in Search_in Find_info Revive Start_up_job Clean_uDo_cleaning Find_link Traverse_network Mirror_image Nan Shortnan Pushdata Find_environment Purge_search Gettrueset Unsetlist Readfilename Read_ion_list Next_nextch Getchar Skipblanks Lex_string Lex_id
Program received signal SIGSEGV, Segmentation fault. 0x8011c33 in comp_object_pointer_types (lhs=0x817b3e4, rhs=0x8590dc0) at
gpc-typeck.c:626
626 for (r = rhs; r; r = TYPE_LANG_SPECIFIC (r)->elts [1]) (gdb) l 621 tree lhs, rhs; 622 { 623 register tree r; 624 if (TREE_CODE (lhs) == RECORD_TYPE 625 && TREE_CODE (rhs) == RECORD_TYPE) 626 for (r = rhs; r; r = TYPE_LANG_SPECIFIC (r)->elts [1]) 627 { 628 if (comptypes (lhs, r)) 629 return 1; 630 } (gdb) p r $1 = (union tree_node *) 0x8590dc0 (gdb) p rhs $2 = (union tree_node *) 0x0 (gdb) p lhs $3 = (union tree_node *) 0x817b3e4 (gdb) where #0 0x8011c33 in comp_object_pointer_types (lhs=0x817b3e4, rhs=0x8590dc0)
at gpc-typeck.c:626
#1 0x8016e76 in convert_for_assignment (type=0x8208ac8, rhs=0x859b31c,
errtype=0x0, fundecl=0x817b9f0, funname=0x8178e20, parmnum=1)
at gpc-typeck.c:4960 #2 0x80139ae in convert_arguments (typelist=0x817b90c, values=0x859b2f4,
name=0x8178e20, fundecl=0x817b9f0) at gpc-typeck.c:2359
The record being compared, and the offending function
procedure read_orion_list(fs: string300; transient: Boolean; anchor: net_index; var ls:logstate); label error_exit; (* When abandoning hope *) const maxlevels = 50; (* Maximum depth of lists within lists *) max_string = 63; (* maximum length identifier string *) type symtype = (uninit, curly_left, curly_right, lit_string, comma, number, logcon, identifier, endfile, dot_dot, from_to, maybe,ellip); lexical_symbol = record case sym: symtype of lit_string: (str_val: string(maxstring)); number: (val: real); logcon: (log: logstate); identifier: (name: string(max_string); id_type: ltype; use: usage); end; (* lexical_symbol *)
var edfile: text; (* File to read from *) b : BindingType; string_pp: integer; (* position in command *) file_io: Boolean; (* Reading from file? *) readlist_nextch: char; (* next input char *) eoln1, eof1: Boolean; s1 : string300;
s2,s3: string(maxstring); (* used for opening file *) i, max1: integer; set1: listarr; prevprevsym, prevsym, now_sym, nextsym: lexical_symbol; filebuf: string(maxlinelen);
function next_nextch(far:integer;file_or_string:boolean): char; (* Returns character beyond nextch *) var ch,nnch:char; begin if file_or_string then begin if length(filebuf) < far then nnch := ' ' else nnch := filebuf[far]; end else begin if string_pp+far > length(system_data.p^.command) then nnch := ' ' else begin ch := system_data.p^.command[string_pp+far]; if ch = chr(10) then nnch := ' ' else nnch := ch; end; end; next_nextch := nnch; end; (* func next_nextch *)
procedure getchar(file_or_string:boolean); (* input is managed by this routine, and the following variables:
- file_io, edfile, system_data.p^.command, nextch, eoln1, eof1.
*) begin while true do begin if file_or_string then begin if filebuf = '' then begin if eoln1 then begin if eof(edfile) then begin eof1 := true; readlist_nextch := ' '; eoln1 := false; end else begin readln(edfile, filebuf); eoln1 := false; filebuf := trim(ztrim(filebuf)); continue; end end else begin eoln1 := true; readlist_nextch := ' '; end end else begin (* filebuf <> '' *) readlist_nextch := filebuf[1]; filebuf := delete(filebuf, 1, 1); end; end else begin string_pp := string_pp + 1; if string_pp > length(system_data.p^.command) then begin readlist_nextch := ' '; if eoln1 then begin eoln1 := false; eof1:= true; end else eoln1 := true; end else begin readlist_nextch := system_data.p^.command[string_pp]; if readlist_nextch = chr(10) then begin eoln1 := true;readlist_nextch := ' '; end else eoln1 := false; end; end; break; end; { while true } end; (* proc getchar *)
procedure skipblanks; const blank = ' '; exclam = '!'; begin (* skip blanks and comments in edfile *) while not eoln1 and_then not eof1 and_then ((readlist_nextch = blank) or_else (readlist_nextch = exclam)) do if readlist_nextch = exclam then repeat getchar(file_io) until eoln1 else getchar(file_io); end;
procedure lex_string; var termch: char; begin with nextsym do begin termch := readlist_nextch; getchar(file_io); sym := lit_string; str_val := ''; while not eoln1 and_then (readlist_nextch <> termch) and_then (length(str_val) < maxstring) do begin str_val := str_val + readlist_nextch; getchar(file_io); end; if readlist_nextch = termch then getchar(file_io) else begin status := 818; goto error_exit; (* fast escape *) end; end end; (* proc lex_string *)
procedure lex_id; const max_name = 31; var s:string(80); begin with nextsym do begin name := ''; sym := identifier; use := normal; while (readlist_nextch in alphanumund) and_then (length(name) < max_name) do begin name := name + readlist_nextch; getchar(file_io); end; if (readlist_nextch in ['?', '$', '%', '@']) then begin if length(name) < max_name then begin case readlist_nextch of '?': id_type := multi; '$': id_type := string_p; '%': id_type := list_p; '@': id_type := logical; end; (* esac *) name := name + readlist_nextch; getchar(file_io); end else begin status := 857; goto error_exit; end; end else id_type := numeric; (* move from end of routine *) s := name; uppercaseproc(s); if (readlist_nextch in ['a'..'z','A'..'Z','_']) (* too long *) or_else (s = 'NYK') then begin status := 862; goto error_exit; end; if (s = 'TRUE') or_else (s = 'FALSE') or_else (s = 'UKE') or_else (s = 'ERROR') then begin log := logstate(index('UEFT', substr(s, 1, 1))); sym := logcon; end; end; (* with *) end; (* proc lex_id *)
Another trace, from compiling another file with a different record structure being compared
Starting program: /tmp/gpc1 externfunc.i
Program received signal SIGSEGV, Segmentation fault. 0x8011c33 in comp_object_pointer_types (lhs=0x817ab08, rhs=0x817af64) at gpc-typeck.c:626 626 for (r = rhs; r; r = TYPE_LANG_SPECIFIC (r)->elts [1]) (gdb) where #0 0x8011c33 in comp_object_pointer_types (lhs=0x817ab08, rhs=0x817af64) at gpc-typeck.c:626 #1 0x8016e76 in convert_for_assignment (type=0x8a060b4, rhs=0x8a05e54, errtype=0x0, fundecl=0x822cd78, funname=0x822caa4, parmnum=2) at gpc-typeck.c:4960 #2 0x80139ae in convert_arguments (typelist=0x822cc80, values=0x8a05e40, name=0x822caa4, fundecl=0x822cd78) at gpc-typeck.c:2359 #3 0x8013244 in build_function_call (function=0x822cd78, params=0x8a05e40) at gpc-typeck.c:1896 #4 0x8007223 in yyparse () at ../gpc-1.2-2.7.2/gpc-parse.y:4364 #5 0x805ab6e in compile_file (name=0xbffffe61 "externfunc.i") at ./toplev.c:2288 #6 0x805d25d in main (argc=2, argv=0xbffffda4, envp=0xbffffdb0) at ./toplev.c:3977 #7 0x800126b in _start () (gdb) up 1 #1 0x8016e76 in convert_for_assignment (type=0x8a060b4, rhs=0x8a05e54, errtype=0x0, fundecl=0x822cd78, funname=0x822caa4, parmnum=2) at gpc-typeck.c:4960 4960 if (TYPE_MAIN_VARIANT (ttl) == void_type_node (gdb) p *funname $1 = {common = {chain = 0x818f334, type = 0x0, code = IDENTIFIER_NODE, side_effects_flag = 0, constant_flag = 0, permanent_flag = 1, addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, unsigned_flag = 0, asm_written_flag = 0, used_flag = 0, raises_flag = 0, static_flag = 0, public_flag = 1, private_flag = 0, protected_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0}, int_cst = { common = "4 \030\b\000\000\000\000\001\004\b", int_cst_low = 13, int_cst_high = 136497872}, real_cst = { common = "4 \030\b\000\000\000\000\001\004\b", rtl = 0xd, real_cst = {r = { 136497872, 136498552, 0}}}, string = { common = "4 \030\b\000\000\000\000\001\004\b", rtl = 0xd, length = 136497872, pointer = 0x822cd78 " "\b\024 "\b\035\004\t"}, complex = {common = "4 \030\b\000\000\000\000\001\004\b", rtl = 0xd, real = 0x822cad0, imag = 0x822cd78}, identifier = { common = "4 \030\b\000\000\000\000\001\004\b", length = 13, pointer = 0x822cad0 "Dollarsubproc"}, decl = { common = "4 \030\b\000\000\000\000\001\004\b", filename = 0xd <Address 0xd out of bounds>, linenum = 136497872, size = 0x822cd78, uid = 0, mode = VOIDmode, external_flag = 0, nonlocal_flag = 0, regdecl_flag = 0, inline_flag = 0, bit_field_flag = 0, virtual_flag = 0, ignored_flag = 0, abstract_flag = 0, in_system_header_flag = 0, common_flag = 0, defer_output = 0, transparent_union = 0, static_ctor_flag = 0, static_dtor_flag = 0, artificial_flag = 0, weak_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, lang_flag_7 = 0, name = 0x0, context = 0x0, arguments = 0x0, result = 0x6c6c6f44, initial = 0x75737261, abstract_origin = 0x6f727062, assembler_name = 0x63, section_name = 0x0, machine_attributes = 0x0, rtl = 0x403, frame_size = {i = 0, u = 0, f = NOT_BUILT_IN}, saved_insns = {r = 0x817bdf4, i = 135773684}, vindex = 0x0, lang_specific = 0x0}, type = { common = "4 \030\b\000\000\000\000\001\004\b", values = 0xd, size = 0x822cad0, attributes = 0x822cd78, uid = 0, precision = 0 '\000', mode = VOIDmode, string_flag = 0, no_force_blk_flag = 0, needs_constructing_flag = 0, transparent_union_flag = 0, packed_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, align = 0, pointer_to = 0x0, reference_to = 0x0, symtab = {address = 1819045700, pointer = 0x6c6c6f44 ""}, name = 0x75737261, minval = 0x6f727062, maxval = 0x63, next_variant = 0x0, main_variant = 0x0, binfo = 0x403, noncopied_parts = 0x0, context = 0x817bdf4, obstack = 0x0, lang_specific = 0x0}, list = { common = "4 \030\b\000\000\000\000\001\004\b", purpose = 0xd, value = 0x822cad0}, vec = {common = "4 \030\b\000\000\000\000\001\004\b", length = 13, a = {0x822cad0}}, exp = { common = "4 \030\b\000\000\000\000\001\004\b", complexity = 13, operands = {0x822cad0}}, block = { common = "4 \030\b\000\000\000\000\001\004\b", handler_block_flag = 1, abstract_flag = 0, vars = 0x822cad0, type_tags = 0x822cd78, subblocks = 0x0, supercontext = 0x0, abstract_origin = 0x0, end_note = 0x0}} (gdb) $2 = {common = {chain = 0x818f334, type = 0x0, code = IDENTIFIER_NODE, side_effects_flag = 0, constant_flag = 0, permanent_flag = 1, addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, unsigned_flag = 0, asm_written_flag = 0, used_flag = 0, raises_flag = 0, static_flag = 0, public_flag = 1, private_flag = 0, protected_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0}, int_cst = { common = "4 \030\b\000\000\000\000\001\004\b", int_cst_low = 13, int_cst_high = 136497872}, real_cst = { common = "4 \030\b\000\000\000\000\001\004\b", rtl = 0xd, real_cst = {r = { 136497872, 136498552, 0}}}, string = { common = "4 \030\b\000\000\000\000\001\004\b", rtl = 0xd, length = 136497872, pointer = 0x822cd78 " "\b\024 "\b\035\004\t"}, complex = {common = "4 \030\b\000\000\000\000\001\004\b", rtl = 0xd, real = 0x822cad0, imag = 0x822cd78}, identifier = { common = "4 \030\b\000\000\000\000\001\004\b", length = 13, pointer = 0x822cad0 "Dollarsubproc"}, decl = { common = "4 \030\b\000\000\000\000\001\004\b", filename = 0xd <Address 0xd out of bounds>, linenum = 136497872, size = 0x822cd78, uid = 0, mode = VOIDmode, external_flag = 0, nonlocal_flag = 0, regdecl_flag = 0, inline_flag = 0, bit_field_flag = 0, virtual_flag = 0, ignored_flag = 0, abstract_flag = 0, in_system_header_flag = 0, common_flag = 0, defer_output = 0, transparent_union = 0, static_ctor_flag = 0, static_dtor_flag = 0, artificial_flag = 0, weak_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, lang_flag_7 = 0, name = 0x0, context = 0x0, arguments = 0x0, result = 0x6c6c6f44, initial = 0x75737261, abstract_origin = 0x6f727062, assembler_name = 0x63, section_name = 0x0, machine_attributes = 0x0, rtl = 0x403, frame_size = {i = 0, u = 0, f = NOT_BUILT_IN}, saved_insns = {r = 0x817bdf4, i = 135773684}, vindex = 0x0, lang_specific = 0x0}, type = { common = "4 \030\b\000\000\000\000\001\004\b", values = 0xd, size = 0x822cad0, attributes = 0x822cd78, uid = 0, precision = 0 '\000', mode = VOIDmode, string_flag = 0, no_force_blk_flag = 0, needs_constructing_flag = 0, transparent_union_flag = 0, packed_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, align = 0, pointer_to = 0x0, reference_to = 0x0, symtab = {address = 1819045700, pointer = 0x6c6c6f44 ""}, name = 0x75737261, minval = 0x6f727062, maxval = 0x63, next_variant = 0x0, main_variant = 0x0, binfo = 0x403, noncopied_parts = 0x0, context = 0x817bdf4, obstack = 0x0, lang_specific = 0x0}, list = { common = "4 \030\b\000\000\000\000\001\004\b", purpose = 0xd, value = 0x822cad0}, vec = {common = "4 \030\b\000\000\000\000\001\004\b", length = 13, a = {0x822cad0}}, exp = { common = "4 \030\b\000\000\000\000\001\004\b", complexity = 13, operands = {0x822cad0}}, block = { common = "4 \030\b\000\000\000\000\001\004\b", handler_block_flag = 1, abstract_flag = 0, vars = 0x822cad0, type_tags = 0x822cd78, subblocks = 0x0, supercontext = 0x0, abstract_origin = 0x0, end_note = 0x0}} (gdb) p *fundecl $3 = {common = {chain = 0x822c9f0, type = 0x822cd14, code = FUNCTION_DECL, side_effects_flag = 0, constant_flag = 0, permanent_flag = 1, addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, unsigned_flag = 0, asm_written_flag = 0, used_flag = 1, raises_flag = 0, static_flag = 0, public_flag = 1, private_flag = 0, protected_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0}, int_cst = { common = " "\b\024 "\b\035\004\t", int_cst_low = 135759440, int_cst_high = 8539}, real_cst = {common = " "\b\024 "\b\035\004\t", rtl = 0x8178650, real_cst = {r = {8539, 0, 2549}}}, string = { common = " "\b\024 "\b\035\004\t", rtl = 0x8178650, length = 8539, pointer = 0x0}, complex = {common = " "\b\024 "\b\035\004\t", rtl = 0x8178650, real = 0x215b, imag = 0x0}, identifier = { common = " "\b\024 "\b\035\004\t", length = 135759440, pointer = 0x215b <Address 0x215b out of bounds>}, decl = { common = " "\b\024 "\b\035\004\t", filename = 0x8178650 "externfunc.pas", linenum = 8539, size = 0x0, uid = 2549, mode = QImode, external_flag = 1, nonlocal_flag = 0, regdecl_flag = 0, inline_flag = 0, bit_field_flag = 0, virtual_flag = 0, ignored_flag = 0, abstract_flag = 0, in_system_header_flag = 0, common_flag = 1, defer_output = 0, transparent_union = 0, static_ctor_flag = 0, static_dtor_flag = 0, artificial_flag = 0, weak_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, lang_flag_7 = 0, name = 0x822caa4, context = 0x0, arguments = 0x0, result = 0x0, initial = 0x0, abstract_origin = 0x0, assembler_name = 0x822cde0, section_name = 0x0, machine_attributes = 0x0, rtl = 0x822ce24, frame_size = {i = 0, u = 0, f = NOT_BUILT_IN}, saved_insns = {r = 0x0, i = 0}, vindex = 0x0, lang_specific = 0x89fda98}, type = {common = " "\b\024 "\b\035\004\t", values = 0x8178650, size = 0x215b, attributes = 0x0, uid = 2549, precision = 1 '\001', mode = QImode, string_flag = 0, no_force_blk_flag = 1, needs_constructing_flag = 0, transparent_union_flag = 0, packed_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, align = 136497828, pointer_to = 0x0, reference_to = 0x0, symtab = {address = 0, pointer = 0x0}, name = 0x0, minval = 0x0, maxval = 0x822cde0, next_variant = 0x0, main_variant = 0x0, binfo = 0x822ce24, noncopied_parts = 0x0, context = 0x0, obstack = 0x0, lang_specific = 0x89fda98}, list = {common = " "\b\024 "\b\035\004\t", purpose = 0x8178650, value = 0x215b}, vec = { common = " "\b\024 "\b\035\004\t", length = 135759440, a = {0x215b}}, exp = {common = " "\b\024 "\b\035\004\t", complexity = 135759440, operands = {0x215b}}, block = {common = " "\b\024 "\b\035\004\t", handler_block_flag = 0, abstract_flag = 0, vars = 0x215b, type_tags = 0x0, subblocks = 0x9f5, supercontext = 0x20101, abstract_origin = 0x822caa4, end_note = 0x0}} (gdb) p *rhs $4 = {common = {chain = 0x0, type = 0x825b390, code = CONVERT_EXPR, side_effects_flag = 0, constant_flag = 0, permanent_flag = 1, addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, unsigned_flag = 0, asm_written_flag = 0, used_flag = 0, raises_flag = 0, static_flag = 0, public_flag = 0, private_flag = 0, protected_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0}, int_cst = { common = "\000\000\000\000\220 %\bi\004\000", int_cst_low = 0, int_cst_high = 136644252}, real_cst = { common = "\000\000\000\000\220 %\bi\004\000", rtl = 0x0, real_cst = {r = { 136644252, 0, 135769552}}}, string = { common = "\000\000\000\000\220 %\bi\004\000", rtl = 0x0, length = 136644252, pointer = 0x0}, complex = { common = "\000\000\000\000\220 %\bi\004\000", rtl = 0x0, real = 0x825069c, imag = 0x0}, identifier = {common = "\000\000\000\000\220 %\bi\004\000", length = 0, pointer = 0x825069c "á\a%\b \005%\b"L\001"}, decl = { common = "\000\000\000\000\220 %\bi\004\000", filename = 0x0, linenum = 136644252, size = 0x0, uid = 135769552, mode = 39, external_flag = 0, nonlocal_flag = 0, regdecl_flag = 1, inline_flag = 0, bit_field_flag = 0, virtual_flag = 0, ignored_flag = 0, abstract_flag = 0, in_system_header_flag = 0, common_flag = 0, defer_output = 0, transparent_union = 0, static_ctor_flag = 0, static_dtor_flag = 0, artificial_flag = 0, weak_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, lang_flag_7 = 0, name = 0x0, context = 0x8a05e54, arguments = 0x0, result = 0x0, initial = 0x403, abstract_origin = 0x0, assembler_name = 0x8a05e68, section_name = 0x0, machine_attributes = 0x822cd14, rtl = 0x440d, frame_size = {i = 0, u = 0, f = NOT_BUILT_IN}, saved_insns = {r = 0x815aa68, i = 135637608}, vindex = 0x0, lang_specific = 0x906}, type = { common = "\000\000\000\000\220 %\bi\004\000", values = 0x0, size = 0x825069c, attributes = 0x0, uid = 135769552, precision = 39 ''', mode = SImode, string_flag = 0, no_force_blk_flag = 0, needs_constructing_flag = 0, transparent_union_flag = 0, packed_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, align = 0, pointer_to = 0x8a05e54, reference_to = 0x0, symtab = {address = 0, pointer = 0x0}, name = 0x403, minval = 0x0, maxval = 0x8a05e68, next_variant = 0x0, main_variant = 0x822cd14, binfo = 0x440d, noncopied_parts = 0x0, context = 0x815aa68, obstack = 0x0, lang_specific = 0x906}, list = { common = "\000\000\000\000\220 %\bi\004\000", purpose = 0x0, value = 0x825069c}, vec = {common = "\000\000\000\000\220 %\bi\004\000", length = 0, a = {0x825069c}}, exp = { common = "\000\000\000\000\220 %\bi\004\000", complexity = 0, operands = { 0x825069c}}, block = {common = "\000\000\000\000\220 %\bi\004\000", handler_block_flag = 0, abstract_flag = 0, vars = 0x825069c, type_tags = 0x0, subblocks = 0x817add0, supercontext = 0x427, abstract_origin = 0x0, end_note = 0x8a05e54}} (gdb) p *lhs (gdb) (gdb) p *type $5 = {common = {chain = 0x0, type = 0x817ab08, code = POINTER_TYPE, side_effects_flag = 0, constant_flag = 0, permanent_flag = 1, addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, unsigned_flag = 1, asm_written_flag = 0, used_flag = 0, raises_flag = 0, static_flag = 0, public_flag = 0, private_flag = 0, protected_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0}, int_cst = { common = "\000\000\000\000\b½\027\b\rD\000", int_cst_low = 0, int_cst_high = 135637608}, real_cst = { common = "\000\000\000\000\b½\027\b\rD\000", rtl = 0x0, real_cst = {r = { 135637608, 0, 2311}}}, string = { common = "\000\000\000\000\b½\027\b\rD\000", rtl = 0x0, length = 135637608, pointer = 0x0}, complex = { common = "\000\000\000\000\b½\027\b\rD\000", rtl = 0x0, real = 0x815aa68, imag = 0x0}, identifier = {common = "\000\000\000\000\b½\027\b\rD\000", length = 0, pointer = 0x815aa68 ""}, decl = { common = "\000\000\000\000\b½\027\b\rD\000", filename = 0x0, linenum = 135637608, size = 0x0, uid = 2311, mode = 32, external_flag = 0, nonlocal_flag = 0, regdecl_flag = 1, inline_flag = 0, bit_field_flag = 0, virtual_flag = 0, ignored_flag = 0, abstract_flag = 0, in_system_header_flag = 0, common_flag = 0, defer_output = 0, transparent_union = 0, static_ctor_flag = 0, static_dtor_flag = 0, artificial_flag = 0, weak_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, lang_flag_7 = 0, name = 0x20, context = 0x0, arguments = 0x0, result = 0x0, initial = 0x0, abstract_origin = 0x0, assembler_name = 0x0, section_name = 0x0, machine_attributes = 0x8a060b4, rtl = 0x0, frame_size = {i = 0, u = 0, f = NOT_BUILT_IN}, saved_insns = { r = 0x0, i = 0}, vindex = 0x8151654, lang_specific = 0x0}, type = { common = "\000\000\000\000\b½\027\b\rD\000", values = 0x0, size = 0x815aa68, attributes = 0x0, uid = 2311, precision = 32 ' ', mode = SImode, string_flag = 0, no_force_blk_flag = 0, needs_constructing_flag = 0, transparent_union_flag = 0, packed_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, align = 32, pointer_to = 0x0, reference_to = 0x0, symtab = {address = 0, pointer = 0x0}, name = 0x0, minval = 0x0, maxval = 0x0, next_variant = 0x0, main_variant = 0x8a060b4, binfo = 0x0, noncopied_parts = 0x0, context = 0x0, obstack = 0x8151654, lang_specific = 0x0}, list = {common = "\000\000\000\000\b½\027\b\rD\000", purpose = 0x0, value = 0x815aa68}, vec = { common = "\000\000\000\000\b½\027\b\rD\000", length = 0, a = {0x815aa68}}, exp = {common = "\000\000\000\000\b½\027\b\rD\000", complexity = 0, operands = {0x815aa68}}, block = { common = "\000\000\000\000\b½\027\b\rD\000", handler_block_flag = 0, abstract_flag = 0, vars = 0x815aa68, type_tags = 0x0, subblocks = 0x907, supercontext = 0x420, abstract_origin = 0x20, end_note = 0x0}}
Please let me know what you would like to see in terms of output.
Regards
Jim