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