From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17553 invoked by alias); 7 Feb 2015 17:47:12 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 17525 invoked by uid 89); 7 Feb 2015 17:47:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_50,MSGID_MULTIPLE_AT autolearn=no version=3.3.2 X-HELO: mailhost.u-strasbg.fr Received: from mailhost.u-strasbg.fr (HELO mailhost.u-strasbg.fr) (130.79.222.211) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 07 Feb 2015 17:47:05 +0000 Received: from mailhost.u-strasbg.fr (localhost [127.0.0.1]) by antispam (Postfix) with ESMTP id 1306322093D; Sat, 7 Feb 2015 18:47:01 +0100 (CET) Received: from mailhost.u-strasbg.fr (localhost [127.0.0.1]) by antivirus (Postfix) with ESMTP id F2CD0220B62; Sat, 7 Feb 2015 18:47:00 +0100 (CET) Received: from lmr.u-strasbg.fr (lmr1.u-strasbg.fr [172.30.21.1]) by mr1.u-strasbg.fr (Postfix) with ESMTP id D2E3622093D; Sat, 7 Feb 2015 18:46:58 +0100 (CET) Received: from lmr.u-strasbg.fr (localhost [127.0.0.1]) by antivirus (Postfix) with ESMTP id 8B70EEA; Sat, 7 Feb 2015 18:46:58 +0100 (CET) Received: from E6510Muller (lec67-4-82-230-53-140.fbx.proxad.net [82.230.53.140]) (Authenticated sender: mullerp) by lmr1.u-strasbg.fr (Postfix) with ESMTPSA id 5ACEE9C; Sat, 7 Feb 2015 18:46:55 +0100 (CET) From: "Pierre Muller" To: Cc: "'Doug Evans'" References: <54d3aa46.0660b40a.14f0.ffffeae7SMTPIN_ADDED_BROKEN@mx.google.com> In-Reply-To: Subject: RE: [PATCH 4/5] Remove struct main_type.vptr_{fieldno,basetype}: TYPE_SPECIFIC_SELF_TYPE Date: Sat, 07 Feb 2015 17:47:00 -0000 Message-ID: <001101d042fe$1103c310$330b4930$@muller@ics-cnrs.unistra.fr> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0012_01D04306.72C82B10" X-SW-Source: 2015-02/txt/msg00175.txt.bz2 This is a multi-part message in MIME format. ------=_NextPart_000_0012_01D04306.72C82B10 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-length: 19054 Hi all, I send to Doug in private an object file together with the assembler file used to generate it for i386 mingw32 (PE o= bject) The source was compiled using Free Pascal compiler with -gs option which generates stabs debugging information. ppc386 -gs -al -XX test.pas (test.pas, test1.pas test2.pas and test2.inc are all source files). I don't know if sending binary object file to the mailing list is accepta= ble. Assembling test.s with a mingw32 target enabled assembler should work. This is enough to trigger the internal error using a Cygwin or mingw32 GDB (and should work on any platform if compiled with --enable-targets=3Dall. I checked with a i386-linux, I get the same internal error (I just need to use=20 set gnutarget pe-i386 before loading the file). I do not send the generated executable and the object is less dangerous and already shows the problem for me, and I hope also for you. Please find below a transcript of my test using this PE object: I hope this will help you to understand more clearly what I described in the previous email. Pierre Muller Pierre@E6510-Muller cygwin-32 ~/git/build/norm-cygwin32/gdb $ ./gdb --args ./gdb ~/pas/trunk/fpcsrc/ide/test.o GNU gdb (GDB) 7.9.50.20150205-cvs Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-pc-cygwin". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./gdb...done. Setting up the environment for debugging gdb. Breakpoint 1 at 0x68c88c: file ../../../binutils-gdb/gdb/common/errors.c, l= ine 54. Breakpoint 2 at 0x4578d4: file ../../../binutils-gdb/gdb/cli/cli-cmds.c, li= ne 217. (top-gdb) r Starting program: /home/Pierre/git/build/norm-cygwin32/gdb/gdb /home/Pierre= /pas/trunk/fpcsrc/ide/test.o [New Thread 2584.0xe1c] [New Thread 2584.0x1478] GNU gdb (GDB) 7.9.50.20150205-cvs Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-pc-cygwin". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /home/Pierre/pas/trunk/fpcsrc/ide/test.o...done. During symbol reading, incomplete CFI data; unspecified registers (e.g., ea= x) at 0x68c889. Breakpoint 1, internal_error (file=3D0x7f4f8c "../../../binutils-gdb/gdb/gdbtypes.c", line=3D1204, fmt=3D0x7f4f5e "%s: Asserti= on `%s' failed.") at ../../../binutils-gdb/gdb/common/errors.c:54 54 va_start (ap, fmt); (top-gdb) bt #0 internal_error (file=3D0x7f4f8c "../../../binutils-gdb/gdb/gdbtypes.c", line=3D1204, fmt=3D0x7f4f5e "%s: Asserti= on `%s' failed.") at ../../../binutils-gdb/gdb/common/errors.c:54 #1 0x00570a5f in internal_type_self_type (type=3D0x801a8050) at ../../../b= inutils-gdb/gdb/gdbtypes.c:1204 #2 0x005e2d10 in read_member_functions (fip=3D0x2c2a354, pp=3D0x2c2a4c0, t= ype=3D0x801a7f88, objfile=3D0x801568c8) at ../../../binutils-gdb/gdb/stabsr= ead.c:2389 #3 0x005e578a in read_struct_type (pp=3D0x2c2a4c0, type=3D0x801a7f88, type= _code=3DTYPE_CODE_STRUCT, objfile=3D0x801568c8) at ../../../binutils-gdb/gd= b/stabsread.c:3555 #4 0x005e1f34 in read_type (pp=3D0x2c2a4c0, objfile=3D0x801568c8) at ../..= /../binutils-gdb/gdb/stabsread.c:2006 #5 0x005e0683 in define_symbol (valu=3D0, string=3D0x8018ec27 ":Tt2=3Ds8Z:/038,0,32;$vf2:48,32;INIT::49=3D##40;:_= _ct__4TOBJ7POINTER;2A.;FUNC::50=3D##17;:4TOBJ;2A.;PROC::51=3D##39;:4TOBJ;2A= *0;2;;DONE::52=3D##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2;", desc=3D0, type= =3D128, objfile=3D0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:1316 #6 0x005abfa6 in process_one_symbol (type=3D128, desc=3D0, valu=3D0, name=3D0x8018ec27 ":Tt2=3Ds8Z:/038,0,32;$vf2:48,32;INIT::49=3D##40;:__c= t__4TOBJ7POINTER;2A.;FUNC::50=3D##17;:4TOBJ;2A.;PROC::51=3D##39;:4TOBJ;2A*0= ;2;;DONE::52=3D##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2;", section_offsets=3D0x80189828, objfile=3D0x801568c8) at ../../../binutil= s-gdb/gdb/dbxread.c:3203 #7 0x005aaee9 in read_ofile_symtab (objfile=3D0x801568c8, pst=3D0x80190148= ) at ../../../binutils-gdb/gdb/dbxread.c:2601 #8 0x005aa961 in dbx_psymtab_to_symtab_1 (objfile=3D0x801568c8, pst=3D0x80= 190148) at ../../../binutils-gdb/gdb/dbxread.c:2418 #9 0x005aaa98 in dbx_read_symtab (self=3D0x80190148, objfile=3D0x801568c8)= at ../../../binutils-gdb/gdb/dbxread.c:2471 #10 0x0051fa46 in psymtab_to_symtab (objfile=3D0x801568c8, pst=3D0x80190148= ) at ../../../binutils-gdb/gdb/psymtab.c:788 #11 0x0051f2d3 in psym_lookup_symbol (objfile=3D0x801568c8, block_index=3D0= , name=3D0x8014b4f8 "main", domain=3DVAR_DOMAIN) at ../../../binutils-gdb/g= db/psymtab.c:520 #12 0x00518140 in lookup_symbol_via_quick_fns (objfile=3D0x801568c8, block_= index=3D0, name=3D0x8014b4f8 "main", domain=3DVAR_DOMAIN) at ../../../binut= ils-gdb/gdb/symtab.c:2436 #13 0x00518488 in lookup_symbol_in_objfile (objfile=3D0x801568c8, block_ind= ex=3D0, name=3D0x8014b4f8 "main", domain=3DVAR_DOMAIN) at ../../../binutils= -gdb/gdb/symtab.c:2604 #14 0x0051865f in lookup_symbol_global_iterator_cb (objfile=3D0x801568c8, c= b_data=3D0x2c2a878) at ../../../binutils-gdb/gdb/symtab.c:2685 #15 0x0041bda5 in windows_iterate_over_objfiles_in_search_order (gdbarch=3D= 0x80149d10, cb=3D0x5185ef , cb_data=3D0x2= c2a878, current_objfile=3D0x0) at ../../../binutils-gdb/gdb/windows-tdep.c:452 #16 0x0056c548 in gdbarch_iterate_over_objfiles_in_search_order (gdbarch=3D= 0x80149d10, cb=3D0x5185ef , cb_data=3D0x2= c2a878, current_objfile=3D0x0) at ../../../binutils-gdb/gdb/gdbarch.c:4412 #17 0x00518777 in lookup_global_symbol (name=3D0x8014b4f8 "main", block=3D0= x0, domain=3DVAR_DOMAIN) at ../../../binutils-gdb/gdb/symtab.c:2730 #18 0x005182b6 in basic_lookup_symbol_nonlocal (langdef=3D0x81be80 , name=3D0x8014b4f8 "main", block=3D0x0, domain=3DVAR_DOMAIN) at .= ./../../binutils-gdb/gdb/symtab.c:2530 #19 0x00517a76 in lookup_symbol_aux (name=3D0x8014b4f8 "main", block=3D0x0,= domain=3DVAR_DOMAIN, language=3Dlanguage_c, is_a_field_of_this=3D0x0) at .= ./../../binutils-gdb/gdb/symtab.c:2148 #20 0x00517431 in lookup_symbol_in_language (name=3D0x8014b4f8 "main", bloc= k=3D0x0, domain=3DVAR_DOMAIN, lang=3Dlanguage_c, is_a_field_of_this=3D0x0) = at ../../../binutils-gdb/gdb/symtab.c:1944 #21 0x00517476 in lookup_symbol (name=3D0x8014b4f8 "main", block=3D0x0, dom= ain=3DVAR_DOMAIN, is_a_field_of_this=3D0x0) at ../../../binutils-gdb/gdb/sy= mtab.c:1958 #22 0x00524c1e in set_initial_language () at ../../../binutils-gdb/gdb/symf= ile.c:1698 #23 0x005242ef in symbol_file_add_main_1 (args=3D0x2c2ac39 "/home/Pierre/pa= s/trunk/fpcsrc/ide/test.o", from_tty=3D1, flags=3D0) at ../../../binutils-g= db/gdb/symfile.c:1327 #24 0x00524290 in symbol_file_add_main (args=3D0x2c2ac39 "/home/Pierre/pas/= trunk/fpcsrc/ide/test.o", from_tty=3D1) at ../../../binutils-gdb/gdb/symfil= e.c:1311 #25 0x005569e5 in catch_command_errors_const (command=3D0x524270 , arg=3D0x2c2ac39 "/home/Pierre/pas/trunk/fpcsrc/ide/test.o", f= rom_tty=3D1, mask=3DRETURN_MASK_ALL) at ../../../binutils-gdb/gdb/main.c:396 #26 0x005578b6 in captured_main (data=3D0x2c2abb4) at ../../../binutils-gdb= /gdb/main.c:1042 #27 0x00552b9d in catch_errors (func=3D0x556c36 , func_args= =3D0x2c2abb4, errstring=3D0x7ea741 <__PRETTY_FUNCTION__.13998+168> "", mask= =3DRETURN_MASK_ALL) at ../../../binutils-gdb/gdb/exceptions.c:237 #28 0x00557c4b in gdb_main (args=3D0x2c2abb4) at ../../../binutils-gdb/gdb/= main.c:1157 #29 0x0040120c in main ( During symbol reading, incomplete CFI data; DW_CFA_restore unspecified register ebx (#3) at 0x6100776e. argc=3D2, argv=3D0x2c2abec) at ../../../binutils-gdb/gdb/gdb.c:32 (top-gdb) f 4 #4 0x005e1f34 in read_type (pp=3D0x2c2a4c0, objfile=3D0x801568c8) at ../..= /../binutils-gdb/gdb/stabsread.c:2006 2006 type =3D read_struct_type (pp, type, type_code, objfile); (top-gdb) p pp $1 =3D (char **) 0x2c2a4c0 (top-gdb) p *pp $2 =3D 0x8018ec54 "__ct__4TOBJ7POINTER;2A.;FUNC::50=3D##17;:4TOBJ;2A.;PROC:= :51=3D##39;:4TOBJ;2A*0;2;;DONE::52=3D##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2= ;" (top-gdb) f 3 #3 0x005e578a in read_struct_type (pp=3D0x2c2a4c0, type=3D0x801a7f88, type= _code=3DTYPE_CODE_STRUCT, objfile=3D0x801568c8) at ../../../binutils-gdb/gd= b/stabsread.c:3555 3555 || !read_member_functions (&fi, pp, type, objfile) (top-gdb) p *type $3 =3D {pointer_type =3D 0x0, reference_type =3D 0x0, chain =3D 0x801a7f88,= instance_flags =3D 0, length =3D 8, main_type =3D 0x801a7fa0} (top-gdb) p *type.main_type $4 =3D {code =3D TYPE_CODE_STRUCT, flag_unsigned =3D 0, flag_nosign =3D 0, = flag_stub =3D 0, flag_target_stub =3D 0, flag_static =3D 0, flag_prototyped= =3D 0, flag_incomplete =3D 0, flag_varargs =3D 0, flag_vector =3D 0, flag_stub_supported =3D 0, flag_gnu_ifunc =3D 0, flag_= fixed_instance =3D 0, flag_objfile_owned =3D 1, flag_declared_class =3D 0, = flag_flag_enum =3D 0, type_specific_field =3D TYPE_SPECIFIC_CPLUS_STUFF, nfields =3D 2, name = =3D 0x0, tag_name =3D 0x0, owner =3D {objfile =3D 0x801568c8, gdbarch =3D 0= x801568c8}, target_type =3D 0x0, flds_bnds =3D { fields =3D 0x801a7fd8, bounds =3D 0x801a7fd8}, type_specific =3D {cplus= _stuff =3D 0x801a8008, gnat_stuff =3D 0x801a8008, floatformat =3D 0x801a800= 8, func_stuff =3D 0x801a8008, self_type =3D 0x801a8008}, data_location =3D 0x0} (top-gdb) f 2 #2 0x005e2d10 in read_member_functions (fip=3D0x2c2a354, pp=3D0x2c2a4c0, t= ype=3D0x801a7f88, objfile=3D0x801568c8) at ../../../binutils-gdb/gdb/stabsr= ead.c:2389 2389 if (!TYPE_SELF_TYPE (new_sublist->fn_field.type)) (top-gdb) p new_sublist->fn_field.type $5 =3D (struct type *) 0x801a8050 (top-gdb) p *new_sublist->fn_field.type $6 =3D {pointer_type =3D 0x0, reference_type =3D 0x0, chain =3D 0x801a8050,= instance_flags =3D 0, length =3D 1, main_type =3D 0x801a8068} (top-gdb) p *new_sublist->fn_field.type.main_type $7 =3D {code =3D TYPE_CODE_METHOD, flag_unsigned =3D 0, flag_nosign =3D 0, = flag_stub =3D 1, flag_target_stub =3D 0, flag_static =3D 0, flag_prototyped= =3D 0, flag_incomplete =3D 0, flag_varargs =3D 0, flag_vector =3D 0, flag_stub_supported =3D 0, flag_gnu_ifunc =3D 0, flag_= fixed_instance =3D 0, flag_objfile_owned =3D 1, flag_declared_class =3D 0, = flag_flag_enum =3D 0, type_specific_field =3D TYPE_SPECIFIC_NONE, nfields =3D 0, name =3D 0x0, = tag_name =3D 0x0, owner =3D {objfile =3D 0x801568c8, gdbarch =3D 0x801568c8= }, target_type =3D 0x80191708, flds_bnds =3D {fields =3D 0x0, bounds =3D 0x0}, type_specific =3D {cplus_stuff =3D 0x0, gnat_stuff =3D= 0x0, floatformat =3D 0x0, func_stuff =3D 0x0, self_type =3D 0x0}, data_loc= ation =3D 0x0} (top-gdb) f 1 #1 0x00570a5f in internal_type_self_type (type=3D0x801a8050) at ../../../b= inutils-gdb/gdb/gdbtypes.c:1204 1204 gdb_assert (TYPE_SPECIFIC_FIELD (type) =3D=3D TYPE_SPECIFIC_F= UNC); (top-gdb) li internal_type_self_type 1191 TYPE must be one of TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, or 1192 TYPE_CODE_METHOD. */ 1193 1194 struct type * 1195 internal_type_self_type (struct type *type) 1196 { 1197 switch (TYPE_CODE (type)) 1198 { 1199 case TYPE_CODE_METHODPTR: 1200 case TYPE_CODE_MEMBERPTR: (top-gdb) 1201 gdb_assert (TYPE_SPECIFIC_FIELD (type) =3D=3D TYPE_SPECIFIC_S= ELF_TYPE); 1202 return TYPE_MAIN_TYPE (type)->type_specific.self_type; 1203 case TYPE_CODE_METHOD: 1204 gdb_assert (TYPE_SPECIFIC_FIELD (type) =3D=3D TYPE_SPECIFIC_F= UNC); 1205 return TYPE_MAIN_TYPE (type)->type_specific.func_stuff->self_= type; 1206 default: 1207 gdb_assert_not_reached ("bad type"); 1208 } 1209 } 1210 (top-gdb) > -----Message d'origine----- > De : gdb-patches-owner@sourceware.org [mailto:gdb-patches- > owner@sourceware.org] De la part de Doug Evans > Envoy=C3=A9 : vendredi 6 f=C3=A9vrier 2015 08:20 > =C3=80 : Pierre Muller > Cc : gdb-patches@sourceware.org > Objet : Re: [PATCH 4/5] Remove struct > main_type.vptr_{fieldno,basetype}: TYPE_SPECIFIC_SELF_TYPE >=20 > "Pierre Muller" writes: > > Hi all, > > > > > >> -----Message d'origine----- > >> De : gdb-patches-owner@sourceware.org [mailto:gdb-patches- > >> owner@sourceware.org] De la part de Doug Evans > >> Envoy=C3=A9 : lundi 26 janvier 2015 01:07 > >> =C3=80 : gdb-patches@sourceware.org; gaius@glam.ac.uk > >> Objet : [PATCH 4/5] Remove struct main_type.vptr_{fieldno,basetype}: > >> TYPE_SPECIFIC_SELF_TYPE > >> > >> Hi. > >> > >> This patch moves TYPE_SELF_TYPE into new field > type_specific.self_type > >> for MEMBERPTR,METHODPTR types, and into type_specific.func_stuff > >> for METHODs, and then updates everything to use that. > >> TYPE_CODE_METHOD could share some things with TYPE_CODE_FUNC > >> (e.g. TYPE_NO_RETURN) and it seemed simplest to keep them together. > >> > >> Moving TYPE_SELF_TYPE into type_specific.func_stuff for > >> TYPE_CODE_METHOD > >> is also nice because when we allocate space for function types we > >> assume > >> they're TYPE_CODE_FUNCs. If TYPE_CODE_METHODs don't need or use that > >> space then that space would be wasted, and cleaning that up would > >> involve > >> more invasive changes. > >> > >> In order to catch errant uses I've added accessor functions > >> that do some checking. > >> > >> One can no longer assign to TYPE_SELF_TYPE like this: > >> > >> TYPE_SELF_TYPE (foo) =3D bar; > >> > >> One instead has to do: > >> > >> set_type_self_type (foo, bar); > >> > >> But I've left reading of the type to the macro: > >> > >> bar =3D TYPE_SELF_TYPE (foo); > >> > >> I could add SET_TYPE_SELF_TYPE as a wrapper on set_type_self_type > >> if you prefer that. > >> > >> In order to discourage bypassing the TYPE_SELF_TYPE macro > >> I've named the underlying function that implements it > > .... > >> * stabsread.c (read_member_functions): Mark methods with > >> TYPE_CODE_METHOD, not TYPE_CODE_FUNC. Update setting of > >> TYPE_SELF_TYPE. > > ..... > >> diff --git a/gdb/stabsread.c b/gdb/stabsread.c > >> index 1f46f75..423c442 100644 > >> --- a/gdb/stabsread.c > >> +++ b/gdb/stabsread.c > >> @@ -2376,14 +2376,21 @@ read_member_functions (struct field_info > *fip, > >> char **pp, struct type *type, > >> p++; > >> } > >> > >> - /* If this is just a stub, then we don't have the real name > >> here. */ > >> + /* These are methods, not functions. */ > >> + if (TYPE_CODE (new_sublist->fn_field.type) =3D=3D TYPE_CODE_FUNC) > >> + TYPE_CODE (new_sublist->fn_field.type) =3D TYPE_CODE_METHOD; > >> + else > >> + gdb_assert (TYPE_CODE (new_sublist->fn_field.type) > >> + =3D=3D TYPE_CODE_METHOD); > >> > >> + /* If this is just a stub, then we don't have the real name > >> here. */ > >> if (TYPE_STUB (new_sublist->fn_field.type)) > >> { > >> if (!TYPE_SELF_TYPE (new_sublist->fn_field.type)) > > I suspect this is the part that generates the failure > > I saw when trying to test my pascal patch that used stabs debugging > > information. > > > > internal_type_self_type generates an internal error > > it does not simply return NULL... >=20 > Hi. > Is it easy/possible to send me a repro? > Even just the binary that triggers the problem would help. > It would be good to verify what's going on here. > If internal_type_self_type got an internal error it must be this one: >=20 > gdb_assert (TYPE_SPECIFIC_FIELD (type) =3D=3D TYPE_SPECIFIC_FUNC); >=20 > But it's hard to see how that would fail given the earlier check > for TYPE_CODE_FUNC: >=20 > if (TYPE_CODE (new_sublist->fn_field.type) =3D=3D TYPE_CODE_FUNC) > TYPE_CODE (new_sublist->fn_field.type) =3D TYPE_CODE_METHOD; > else > gdb_assert (TYPE_CODE (new_sublist->fn_field.type) > =3D=3D TYPE_CODE_METHOD); >=20 > I'm not sure how we'd get here with anything other than TYPE_CODE_FUNC > but for robustness I added the assert for TYPE_CODE_METHOD. > And if we've got a TYPE_CODE_FUNC then AFAICT that means we've called > make_function_type which sets TYPE_SPECIFIC_FIELD (type) =3D > TYPE_SPECIFIC_FUNC. > Ergo IWBN to reproduce this and see the details. >=20 > I'm not saying there isn't a problem of course, > just that I may need some help understanding it. >=20 > Also, why couldn't internal_type_self_type return NULL? >=20 > >> - TYPE_SELF_TYPE (new_sublist->fn_field.type) =3D type; > >> + set_type_self_type (new_sublist->fn_field.type, type); > >> new_sublist->fn_field.is_stub =3D 1; > >> } > >> + > >> new_sublist->fn_field.physname =3D savestring (*pp, p - *pp); > >> *pp =3D p + 1; > > > > The patch below removes the internal error, > > but I am not sure it is the correct fix... > > Maybe set_type_self_type should be called unconditionally. > > > > Likewise, the line: > > valops.c:2547: gdb_assert (TYPE_SELF_TYPE (fns_ptr[0].type) !=3D > NULL); > > is not compatible with your new internal_type_self_type as this > > new function never returns NULL.... > > > > > > Pierre Muller > > > > $ git diff > > diff --git a/gdb/stabsread.c b/gdb/stabsread.c > > index 2a160c5..392fdb2 100644 > > --- a/gdb/stabsread.c > > +++ b/gdb/stabsread.c > > @@ -2386,7 +2386,7 @@ read_member_functions (struct field_info *fip, > char > > **pp, struct type *type, > > /* If this is just a stub, then we don't have the real name > here. > > */ > > if (TYPE_STUB (new_sublist->fn_field.type)) > > { > > - if (!TYPE_SELF_TYPE (new_sublist->fn_field.type)) > > + if (TYPE_SPECIFIC_FIELD (new_sublist->fn_field.type) > =3D=3D > > TYPE_SPECIFIC_NONE) > > set_type_self_type (new_sublist->fn_field.type, > type); > > new_sublist->fn_field.is_stub =3D 1; > > } ------=_NextPart_000_0012_01D04306.72C82B10 Content-Type: text/plain; name="test.s" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="test.s" Content-length: 46919 .file "test.pas" # Begin asmlist al_begin .section .text.b_DEBUGSTART_P$TESTPROGRAM,"x" .globl DEBUGSTART_P$TESTPROGRAM DEBUGSTART_P$TESTPROGRAM: .stabs "E:/pas/trunk/fpcsrc/ide/",100,0,0,.Lf12 .stabs "test.pas",100,0,0,.Lf12 .Lf12: # End asmlist al_begin # Begin asmlist al_stabs .section .data.n_TESTPROGRAM,"d" .globl DEBUGINFO_P$TESTPROGRAM DEBUGINFO_P$TESTPROGRAM: # Defs - Begin unit SYSTEM has index 1 .stabs "void:t39=3D39",128,0,0,0 .stabs "SHORTINT:t41=3Dr41;-128;127;",128,0,0,0 .stabs "WORD:t15=3Dr15;0;65535;",128,0,0,0 .stabs "LONGINT:t38=3Dr38;-2147483648;2147483647;",128,0,0,0 .stabs "BOOLEAN:t17=3D-21;",128,0,0,0 .stabs "LONGBOOL:t40=3D-23;",128,0,0,0 .stabs "CHAR:t42=3D-20;",128,0,0,0 .stabs "BYTE:t43=3Dr43;0;255;",128,0,0,0 .stabs "SHORTSTRING:Tt20=3Ds256length:43,0,8;st:ar43;1;255;42,8,2040;;",12= 8,0,0,0 .stabs "DOUBLE:t30=3Dr38;8;0;",128,0,0,0 .stabs "EXTENDED:t32=3Dr38;10;0;",128,0,0,0 .stabs "POINTER:t33=3D*39",128,0,0,0 .stabs "file:Tt23=3Ds332HANDLE:38,0,32;MODE:38,32,32;RECSIZE:38,64,32;_PRI= VATE:ar38;1;32;42,96,256;USERDATA:ar38;1;16;43,352,128;NAME:ar38;0;255;42,4= 80,2048;;",128,0,0,0 .stabs "COMP:t31=3Dr38;-8;0;",128,0,0,0 .stabs "REAL:t29=3Dr38;8;0;",128,0,0,0 # Defs - End unit SYSTEM has index 1 # Defs - Begin unit FPINTRES has index 2 # Defs - End unit FPINTRES has index 2 # Defs - Begin unit OBJPAS has index 3 # Defs - End unit OBJPAS has index 3 # Defs - Begin unit TEST1 has index 4 # Defs - End unit TEST1 has index 4 # Defs - Begin unit TEST2 has index 5 .stabs "TRECORD:Tt18=3Ds8FIELD1:38,0,32;NEXT:16,32,32;",128,0,0,0 .stabs "PRECORD:t16=3D*18",128,0,0,0 # Defs - End unit TEST2 has index 5 # Defs - Begin unit SYSINITPAS has index 6 # Defs - End unit SYSINITPAS has index 6 # Defs - Begin Staticsymtable .stabs ":t44=3D*20",128,0,0,0 .stabs ":t45=3Dar38;0;0;33",128,0,0,0 .stabs "__vtbl_ptr_type:Tt46=3Ds2;",128,0,0,0 .stabs "pvmt:t47=3D*46",128,0,0,0 .stabs "vtblarray:t48=3Dar38;0;1;47",128,0,0,0 .stabs ":Tt2=3Ds8Z:/038,0,32;$vf2:48,32;INIT::49=3D##40;:__ct__4TOBJ7POINT= ER;2A.;FUNC::50=3D##17;:4TOBJ;2A.;PROC::51=3D##39;:4TOBJ;2A*0;2;;DONE::52= =3D##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2;",128,0,0,0 .stabs "vmt_TESTPROGRAMTOBJ:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ .stabs ":t1=3D*2",128,0,0,0 .stabs ":Tt3=3Ds8!1,020,2;PROC::53=3D##39;:5TOBJ2;2A*0;3;;;~%2;",128,0,0,0 .stabs "vmt_TESTPROGRAMTOBJ2:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ2 .stabs ":Tt4=3Ds8!1,020,2;;~%2;",128,0,0,0 .stabs "vmt_TESTPROGRAMTOBJ3:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ3 .stabs ":Tt5=3Ds8!1,020,4;;~%2;",128,0,0,0 .stabs "vmt_TESTPROGRAMTOBJ32:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ32 .stabs ":Tt6=3Ds8!1,020,2;;~%2;",128,0,0,0 .stabs "vmt_TESTPROGRAMTOBJ4:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ4 .stabs "TOBJECT:Tt54=3Ds4$vf54:48,0;CREATE::56=3D##55;:__ct__7TOBJECT7POIN= TER;2A.;DESTROY::57=3D##39;:__dt__7TOBJECT7POINTER;2A*0;54;;NEWINSTANCE::58= =3D##55;:11unnamedtype;2A*1;54;;FREEINSTANCE::59=3D##39;:7TOBJECT;2A*2;54;;= SAFECALLEXCEPTION::60=3D##61;:7TOBJECT7TOBJECT7POINTER;2A*3;54;;DEFAULTHAND= LER::62=3D##39;:7TOBJECT3var;2A*4;54;;FREE::63=3D##39;:7TOBJECT;2A.;INITINS= TANCE::64=3D##55;:11unnamedtype7POINTER;2A.;CLEANUPINSTANCE::65=3D##39;:7TO= BJECT;2A.;CLASSTYPE::66=3D##67;:11unnamedtype;2A.;CLASSINFO::68=3D##33;:11u= nnamedtype;2A.;CLASSNAME::69=3D##20;:11unnamedtype11SHORTSTRING;2A.;CLASSNA= MEIS::70=3D##17;:11unnamedtype11SHORTSTRING;2A.;CLASSPARENT::71=3D##67;:11u= nnamedtype;2A.;INSTANCESIZE::72=3D##38;:11unnamedtype;2A.;INHERITSFROM::73= =3D##17;:11unnamedtype6TCLASS;2A.;STRINGMESSAGETABLE::74=3D##75;:11unnamedt= ype;2A.;METHODADDRESS::76=3D##33;:11unnamedtype11SHORTSTRING;2A.;METHODNAME= ::77=3D##20;:11unnamedtype7POINTER11SHORTSTRING;2A.;FIELDADDRESS::78=3D##33= ;:7TOBJECT11SHORTSTRING;2A.;AFTERCONSTRUCTION::79=3D##39;:7TOBJECT;2A*5;54;= ;BEFOREDESTRUCTION::80=3D##39;:7TOBJECT;2A*6;54;;DEFAULTHANDLERSTR::81=3D##= 39;:7TOBJECT3var;2A*7;54;;DISPATCH::82=3D##39;:7TOBJECT3var;2A*8;54;;DISPAT= CHSTR::83=3D##39;:7TOBJECT3var;2A*9;54;;GETINTERFACE::84=3D##17;:7TOBJECT5T= GUID3out;2A.;GETINTERFACEBYSTR::85=3D##17;:7TOBJECT11SHORTSTRING3out;2A.;GE= TINTERFACEWEAK::86=3D##17;:7TOBJECT5TGUID3out;2A.;GETINTERFACEENTRY::87=3D#= #88;:11unnamedtype5TGUID;2A.;GETINTERFACEENTRYBYSTR::89=3D##88;:11unnamedty= pe11SHORTSTRING;2A.;GETINTERFACETABLE::90=3D##91;:11unnamedtype;2A.;UNITNAM= E::92=3D##93;:11unnamedtype10ANSISTRING;2A.;EQUALS::94=3D##17;:7TOBJECT7TOB= JECT;2A*10;54;;GETHASHCODE::95=3D##38;:7TOBJECT;2A*11;54;;TOSTRING::96=3D##= 93;:7TOBJECT10ANSISTRING;2A*12;54;;;~%54;",128,0,0,0 .stabs ":Tt55=3D*54",128,0,0,0 .stabs "vmt_SYSTEMTOBJECT:S46",38,0,0,VMT_SYSTEM_TOBJECT .stabs "TCLASS:Tt7=3Ds260!1,020,54;NAME:20,32,2048;CREATE::97=3D##8;:__ct_= _6TCLASS7POINTER;2A.;;~%54;",128,0,0,0 .stabs ":Tt8=3D*7",128,0,0,0 .stabs "vmt_TESTPROGRAMTCLASS:S46",38,0,0,VMT_P$TESTPROGRAM_TCLASS .stabs "TCLASS2:Tt9=3Ds264!1,020,7;X:38,2080,32;CREATE::98=3D##10;:__ct__7= TCLASS27POINTER;2A.;;~%54;",128,0,0,0 .stabs ":Tt10=3D*9",128,0,0,0 .stabs "vmt_TESTPROGRAMTCLASS2:S46",38,0,0,VMT_P$TESTPROGRAM_TCLASS2 .stabs ":Tt11=3DeENUM1:0,ENUM2:1,ENUM3:2,;",128,0,0,0 .stabs ":t12=3Dar41;1;10;11",128,0,0,0 .stabs ":t13=3D*f29",128,0,0,0 .stabs ":t14=3D@s32;S11",128,0,0,0 .stabs ":Tt19=3Ds21length:43,0,8;st:ar43;1;20;42,8,160;;",128,0,0,0 .stabs ":t21=3Dar41;2;45;15",128,0,0,0 .stabs ":Tt22=3DeENUMELEM1:0,ENUMELEM2:1,ENUMELEM3:2,;",128,0,0,0 .stabs ":Tt24=3Ds332HANDLE:38,0,32;MODE:38,32,32;RECSIZE:38,64,32;_PRIVATE= :ar38;1;32;42,96,256;USERDATA:ar38;1;16;43,352,128;NAME:ar38;0;255;42,480,2= 048;;",128,0,0,0 .stabs ":Tt25=3Ds332HANDLE:38,0,32;MODE:38,32,32;RECSIZE:38,64,32;_PRIVATE= :ar38;1;32;42,96,256;USERDATA:ar38;1;16;43,352,128;NAME:ar38;0;255;42,480,2= 048;;",128,0,0,0 .stabs ":t26=3D*f39",128,0,0,0 .stabs ":t27=3D*f17",128,0,0,0 .stabs ":t28=3D@s256;S42",128,0,0,0 .stabs "SMALLINT:t99=3Dr99;-32768;32767;",128,0,0,0 .stabs ":t34=3Dar99;1;2000;42",128,0,0,0 .stabs ":t35=3Dar99;1;2000;32",128,0,0,0 .stabs ":t36=3Dar99;1;2000;32",128,0,0,0 .stabs "SINGLE:t100=3Dr38;4;0;",128,0,0,0 .stabs ":t101=3Dar41;1;10;100",128,0,0,0 .stabs ":t37=3Dar41;1;10;101",128,0,0,0 # Defs - End Staticsymtable .stabs "HRESULT:t61=3Dr61;-2147483648;2147483647;",128,0,0,0 .stabs "pvmt:t47=3D*46",128,0,0,0 .stabs "PSHORTSTRING:t102=3D*20",128,0,0,0 .stabs "TMSGSTRTABLE:Tt103=3Ds8NAME:102,0,32;METHOD:33,32,32;",128,0,0,0 .stabs ":t104=3Dar41;0;0;103",128,0,0,0 .stabs "TSTRINGMESSAGETABLE:Tt105=3Ds12COUNT:38,0,32;MSGSTRTABLE:104,32,64= ;",128,0,0,0 .stabs "PSTRINGMESSAGETABLE:t75=3D*105",128,0,0,0 .stabs "LONGWORD:t106=3Dr106;0;-1;",128,0,0,0 .stabs ":t107=3Dar41;0;7;43",128,0,0,0 .stabs ":t108=3Dar41;0;7;43",128,0,0,0 .stabs ":t109=3Dar41;0;5;43",128,0,0,0 .stabs "TGUID:Tt110=3Ds16DATA1:106,0,32;DATA2:15,32,16;DATA3:15,48,16;DATA= 4:107,64,64;D1:106,0,32;D2:15,32,16;D3:15,48,16;D4:108,64,64;TIME_LOW:106,0= ,32;TIME_MID:15,32,16;TIME_HI_AND_VERSION:15,48,16;CLOCK_SEQ_HI_AND_RESERVE= D:43,64,8;CLOCK_SEQ_LOW:43,72,8;NODE:109,80,48;",128,0,0,0 .stabs "PGUID:t111=3D*110",128,0,0,0 .stabs "TINTERFACEENTRYTYPE:Tt112=3DeETSTANDARD:0,ETVIRTUALMETHODRESULT:1,= ETSTATICMETHODRESULT:2,ETFIELDVALUE:3,ETVIRTUALMETHODCLASS:4,ETSTATICMETHOD= CLASS:5,ETFIELDVALUECLASS:6,;",128,0,0,0 .stabs "TINTERFACEENTRY:Tt113=3Ds20IID:111,0,32;VTABLE:33,32,32;IOFFSET:10= 6,64,32;IIDSTR:102,96,32;ITYPE:112,128,32;__PAD_DUMMY:33,128,32;",128,0,0,0 .stabs "PINTERFACEENTRY:t88=3D*113",128,0,0,0 .stabs ":t114=3Dar41;0;0;113",128,0,0,0 .stabs "TINTERFACETABLE:Tt115=3Ds24ENTRYCOUNT:106,0,32;ENTRIES:114,32,160;= ",128,0,0,0 .stabs "PINTERFACETABLE:t91=3D*115",128,0,0,0 .stabs "ANSISTRING:Tt93=3D*42",128,0,0,0 # Syms - Begin Staticsymtable .stabs "A:c=3Di1234;",36,0,12,0 .stabs "C:c=3Ds'\\001\\002\\003\\004';",36,0,13,0 .stabs "CONSTBOOL1:c=3Di1;",36,0,14,0 .stabs "CONSTBOOL2:c=3Di5;",36,0,15,0 .stabs "CONSTCHAR:c=3Di65;",36,0,16,0 .stabs "CONSTSET:c=3Di0;",36,0,17,0 .stabs "CONSTSET2:c=3Di0;",36,0,18,0 .stabs "CONSTFLOAT:c=3Dr 3.1415000000000000E+0000;",36,0,19,0 .stabs "POBJ:t1",128,0,24,0 .stabs "TOBJ:Tt2",128,0,25,0 .stabs "TOBJ2:Tt3",128,0,34,0 .stabs "TOBJ3:Tt4",128,0,38,0 .stabs "TOBJ32:Tt5",128,0,41,0 .stabs "TOBJ4:Tt6",128,0,44,0 .stabs "TCLASS:Tt8",128,0,47,0 .stabs "TCLASS2:Tt10",128,0,52,0 .stabs "ENUMTYP:Tt11",128,0,57,0 .stabs "ARRAYTYP:t12",128,0,58,0 .stabs "PROCTYP:t13",128,0,59,0 .stabs "SETTYP:t14",128,0,60,0 .stabs "CONSTORD:c=3Di0;",36,0,63,0 .stabs "HELLO:S15",40,0,65,U_P$TESTPROGRAM_HELLO .stabs "X:S16",40,0,66,U_P$TESTPROGRAM_X .stabs "BOOL:S17",40,0,67,U_P$TESTPROGRAM_BOOL .stabs "T:S18",40,0,68,U_P$TESTPROGRAM_T .stabs "STR20:S19",40,0,69,U_P$TESTPROGRAM_STR20 .stabs "STR255:S20",40,0,70,U_P$TESTPROGRAM_STR255 .stabs "ARRAYW:S21",40,0,71,U_P$TESTPROGRAM_ARRAYW .stabs "ARRAYVAR:S12",40,0,72,U_P$TESTPROGRAM_ARRAYVAR .stabs "ENUMVAR:S22",40,0,73,U_P$TESTPROGRAM_ENUMVAR .stabs "ENUMVAR2:S11",40,0,74,U_P$TESTPROGRAM_ENUMVAR2 .stabs "FILEVAR:S23",40,0,75,U_P$TESTPROGRAM_FILEVAR .stabs "FILEVARR:S24",40,0,76,U_P$TESTPROGRAM_FILEVARR .stabs "FILEVARW:S25",40,0,77,U_P$TESTPROGRAM_FILEVARW .stabs "PROCVAR:S26",40,0,78,U_P$TESTPROGRAM_PROCVAR .stabs "PROCVARD:S27",40,0,79,U_P$TESTPROGRAM_PROCVARD .stabs "PROCVARI:S13",40,0,80,U_P$TESTPROGRAM_PROCVARI .stabs "SETVARD:S28",40,0,81,U_P$TESTPROGRAM_SETVARD .stabs "SETVARI:S14",40,0,82,U_P$TESTPROGRAM_SETVARI .stabs "FLOAT1:S29",40,0,83,U_P$TESTPROGRAM_FLOAT1 .stabs "FLOAT2:S30",40,0,84,U_P$TESTPROGRAM_FLOAT2 .stabs "FLOAT3:S31",40,0,85,U_P$TESTPROGRAM_FLOAT3 .stabs "FLOAT4:S32",40,0,86,U_P$TESTPROGRAM_FLOAT4 .stabs "POINTER1:S33",40,0,87,U_P$TESTPROGRAM_POINTER1 .stabs "POINTER2:S1",40,0,88,U_P$TESTPROGRAM_POINTER2 .stabs "CLASSVAR1:S8",40,0,89,U_P$TESTPROGRAM_CLASSVAR1 .stabs "CLASSVAR2:S10",40,0,90,U_P$TESTPROGRAM_CLASSVAR2 .stabs "OBJ1:S2",40,0,91,U_P$TESTPROGRAM_OBJ1 .stabs "OBJ2:S3",40,0,92,U_P$TESTPROGRAM_OBJ2 .stabs "CHARARRAY:S34",40,0,93,U_P$TESTPROGRAM_CHARARRAY .stabs "EXTENDEDARRAY:S35",40,0,94,U_P$TESTPROGRAM_EXTENDEDARRAY .stabs "EXTENDEDPACKEDARRAY:S36",40,0,95,U_P$TESTPROGRAM_EXTENDEDPACKEDARR= AY .stabs "SINGLEARRAYARRAY:S37",40,0,96,U_P$TESTPROGRAM_SINGLEARRAYARRAY .stabs "I:S38",40,0,159,U_P$TESTPROGRAM_I .stabs "J:S38",40,0,159,U_P$TESTPROGRAM_J .stabs "LENGTH:S38",40,0,160,U_P$TESTPROGRAM_LENGTH # Syms - End Staticsymtable # End asmlist al_stabs # Begin asmlist al_procedures .section .text.n_p$testprogram_tobj_$__init$$longbool,"x" .balign 16,0x90 .globl P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL: .stabs "TOBJ__INIT:F40",36,0,98,P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL .stabs "vmt:R33",64,0,26,2 .stabs "vmt:33",160,0,26,-4 .stabs "$t:v2",160,0,0,-8 # Temps allocated between ebp-8 and ebp-8 .stabs "test.pas",132,0,0,.Lf1 .Lf1: .stabn 68,0,99,.Ll1 - P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL .Ll1: # [test.pas] # [99] begin pushl %ebp movl %esp,%ebp subl $8,%esp # Var $vmt located at ebp-4 # Var $self located at ebp-8 movl %eax,-8(%ebp) movl %edx,-4(%ebp) .stabn 68,0,99,.Ll2 - P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL .Ll2: leal -4(%ebp),%edx movl -8(%ebp),%eax movl $4,%ecx call fpc_help_constructor movl %eax,-8(%ebp) movl -8(%ebp),%eax testl %eax,%eax je .Lj13 jmp .Lj14 .Lj13: jmp .Lj3 .Lj14: .stabn 68,0,100,.Ll3 - P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL .Ll3: # [100] Z:=3D1; movl -8(%ebp),%eax movl $1,(%eax) .Lj3: .stabn 68,0,101,.Ll4 - P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL .Ll4: # [101] end; movl -8(%ebp),%eax leave ret .stabn 192,0,0,P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL-P$TESTPROGRAM_TOBJ_$__= INIT$$LONGBOOL .stabn 224,0,0,.Lt2-P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL .Lt2: .section .text.n_p$testprogram_tobj_$__func$$boolean,"x" .balign 16,0x90 .globl P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN: .stabs "TOBJ__FUNC:F17",36,0,103,P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN .stabs "$t:v2",160,0,0,-4 .stabs "result:17",160,0,103,-8 # Temps allocated between ebp-8 and ebp-8 .stabs "test.pas",132,0,0,.Lf2 .Lf2: .stabn 68,0,104,.Ll5 - P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN .Ll5: # [104] begin pushl %ebp movl %esp,%ebp subl $8,%esp # Var $self located at ebp-4 # Var $result located at ebp-8 movl %eax,-4(%ebp) .stabn 68,0,105,.Ll6 - P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN .Ll6: # [105] Func:=3Dtrue; movb $1,-8(%ebp) .stabn 68,0,106,.Ll7 - P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN .Ll7: # [106] end; movb -8(%ebp),%al leave ret .stabs "FUNC:X17",160,0,0,-8 .stabs "RESULT:X17",160,0,0,-8 .stabn 192,0,0,P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN-P$TESTPROGRAM_TOBJ_$__F= UNC$$BOOLEAN .stabn 224,0,0,.Lt3-P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN .Lt3: .section .text.n_p$testprogram_tobj_$__proc,"x" .balign 16,0x90 .globl P$TESTPROGRAM_TOBJ_$__PROC P$TESTPROGRAM_TOBJ_$__PROC: .stabs "TOBJ__PROC:F39",36,0,108,P$TESTPROGRAM_TOBJ_$__PROC .stabs "$t:v2",160,0,0,-4 # Temps allocated between ebp-4 and ebp-4 .stabs "test.pas",132,0,0,.Lf3 .Lf3: .stabn 68,0,109,.Ll8 - P$TESTPROGRAM_TOBJ_$__PROC .Ll8: # [109] begin pushl %ebp movl %esp,%ebp subl $4,%esp # Var $self located at ebp-4 movl %eax,-4(%ebp) .stabn 68,0,110,.Ll9 - P$TESTPROGRAM_TOBJ_$__PROC .Ll9: # [110] if Func=3Dfalse then Halt; movl -4(%ebp),%eax call P$TESTPROGRAM_TOBJ_$__FUNC$$BOOLEAN testb %al,%al je .Lj23 jmp .Lj24 .Lj23: movl $0,%eax call SYSTEM_HALT$LONGINT .Lj24: .stabn 68,0,111,.Ll10 - P$TESTPROGRAM_TOBJ_$__PROC .Ll10: # [111] end; leave ret .stabn 192,0,0,P$TESTPROGRAM_TOBJ_$__PROC-P$TESTPROGRAM_TOBJ_$__PROC .stabn 224,0,0,.Lt4-P$TESTPROGRAM_TOBJ_$__PROC .Lt4: .section .text.n_p$testprogram_tobj_$__done,"x" .balign 16,0x90 .globl P$TESTPROGRAM_TOBJ_$__DONE P$TESTPROGRAM_TOBJ_$__DONE: .stabs "TOBJ__DONE:F39",36,0,113,P$TESTPROGRAM_TOBJ_$__DONE .stabs "vmt:R33",64,0,29,2 .stabs "vmt:33",160,0,29,-4 .stabs "$t:v2",160,0,0,-8 # Temps allocated between ebp-8 and ebp-8 .stabs "test.pas",132,0,0,.Lf4 .Lf4: .stabn 68,0,114,.Ll11 - P$TESTPROGRAM_TOBJ_$__DONE .Ll11: # [114] begin pushl %ebp movl %esp,%ebp subl $8,%esp # Var $vmt located at ebp-4 # Var $self located at ebp-8 movl %eax,-8(%ebp) movl %edx,-4(%ebp) .stabn 68,0,115,.Ll12 - P$TESTPROGRAM_TOBJ_$__DONE .Ll12: # [115] end; movl -4(%ebp),%edx movl -8(%ebp),%eax movl $4,%ecx call fpc_help_destructor leave ret .stabn 192,0,0,P$TESTPROGRAM_TOBJ_$__DONE-P$TESTPROGRAM_TOBJ_$__DONE .stabn 224,0,0,.Lt5-P$TESTPROGRAM_TOBJ_$__DONE .Lt5: .section .text.n_p$testprogram_tobj2_$__proc,"x" .balign 16,0x90 .globl P$TESTPROGRAM_TOBJ2_$__PROC P$TESTPROGRAM_TOBJ2_$__PROC: .stabs "TOBJ2__PROC:F39",36,0,117,P$TESTPROGRAM_TOBJ2_$__PROC .stabs "$t:v3",160,0,0,-4 # Temps allocated between ebp-4 and ebp-4 .stabs "test.pas",132,0,0,.Lf5 .Lf5: .stabn 68,0,118,.Ll13 - P$TESTPROGRAM_TOBJ2_$__PROC .Ll13: # [118] begin pushl %ebp movl %esp,%ebp subl $4,%esp # Var $self located at ebp-4 movl %eax,-4(%ebp) .stabn 68,0,119,.Ll14 - P$TESTPROGRAM_TOBJ2_$__PROC .Ll14: # [119] Z:=3D4; movl -4(%ebp),%eax movl $4,(%eax) .stabn 68,0,120,.Ll15 - P$TESTPROGRAM_TOBJ2_$__PROC .Ll15: # [120] end; leave ret .stabn 192,0,0,P$TESTPROGRAM_TOBJ2_$__PROC-P$TESTPROGRAM_TOBJ2_$__PROC .stabn 224,0,0,.Lt6-P$TESTPROGRAM_TOBJ2_$__PROC .Lt6: .section .text.n_p$testprogram_tclass_$__create$$tclass,"x" .balign 16,0x90 .globl P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS: .stabs "TCLASS__CREATE:F8",36,0,122,P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS .stabs "vmt:R33",64,0,49,2 .stabs "vmt:33",160,0,49,-4 .stabs "$t:p8",160,0,0,-8 # Temps allocated between ebp-88 and ebp-8 .stabs "test.pas",132,0,0,.Lf6 .Lf6: .stabn 68,0,123,.Ll16 - P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS .Ll16: # [123] begin pushl %ebp movl %esp,%ebp subl $88,%esp # Var $vmt located at ebp-4 # Var $self located at ebp-8 movl %eax,-8(%ebp) movl %edx,-4(%ebp) .stabn 68,0,123,.Ll17 - P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS .Ll17: movl -4(%ebp),%eax cmpl $1,%eax ja .Lj43 jmp .Lj44 .Lj43: movl -4(%ebp),%eax movl -4(%ebp),%edx call *52(%edx) movl %eax,-8(%ebp) .Lj44: movl -8(%ebp),%eax testl %eax,%eax je .Lj49 jmp .Lj50 .Lj49: jmp .Lj41 .Lj50: .stabn 68,0,125,.Ll18 - P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS .Ll18: # [125] end; leal -20(%ebp),%ecx leal -44(%ebp),%edx movl $1,%eax call FPC_PUSHEXCEPTADDR call FPC_SETJMP pushl %eax testl %eax,%eax jne .Lj53 leal -60(%ebp),%ecx leal -84(%ebp),%edx movl $1,%eax call FPC_PUSHEXCEPTADDR call FPC_SETJMP pushl %eax testl %eax,%eax jne .Lj57 .stabn 68,0,124,.Ll19 - P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS .Ll19: # [124] Name:=3D'TClass instance'; movl -8(%ebp),%eax leal 4(%eax),%eax movl $_$TESTPROGRAM$_Ld1,%ecx movl $255,%edx call fpc_shortstr_to_shortstr .Lj57: call FPC_POPADDRSTACK popl %eax testl %eax,%eax je .Lj58 call FPC_RERAISE .Lj58: .stabn 68,0,125,.Ll20 - P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS .Ll20: movl -8(%ebp),%eax testl %eax,%eax jne .Lj68 jmp .Lj67 .Lj68: movl -4(%ebp),%eax testl %eax,%eax jne .Lj66 jmp .Lj67 .Lj66: movl -8(%ebp),%eax movl -8(%ebp),%edx movl (%edx),%edx call *68(%edx) .Lj67: .Lj53: call FPC_POPADDRSTACK popl %eax testl %eax,%eax je .Lj55 leal -60(%ebp),%ecx leal -88(%ebp),%edx movl $1,%eax call FPC_PUSHEXCEPTADDR call FPC_SETJMP pushl %eax testl %eax,%eax jne .Lj72 movl -4(%ebp),%eax testl %eax,%eax jne .Lj73 jmp .Lj74 .Lj73: movl -8(%ebp),%eax movl $-1,%edx movl -8(%ebp),%ecx movl (%ecx),%ecx call *48(%ecx) .Lj74: call FPC_POPADDRSTACK call FPC_RERAISE .Lj72: call FPC_POPADDRSTACK popl %eax testl %eax,%eax je .Lj71 call FPC_POPSECONDOBJECTSTACK call FPC_DESTROYEXCEPTION call FPC_RERAISE .Lj71: call FPC_POPOBJECTSTACK call FPC_DESTROYEXCEPTION jmp .Lj55 .Lj55: .Lj41: movl -8(%ebp),%eax leave ret .stabn 192,0,0,P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS-P$TESTPROGRAM_TCLASS= _$__CREATE$$TCLASS .stabn 224,0,0,.Lt7-P$TESTPROGRAM_TCLASS_$__CREATE$$TCLASS .Lt7: .section .text.n_p$testprogram_tclass2_$__create$$tclass2,"x" .balign 16,0x90 .globl P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2: .stabs "TCLASS2__CREATE:F10",36,0,127,P$TESTPROGRAM_TCLASS2_$__CREATE$$TCL= ASS2 .stabs "vmt:R33",64,0,54,2 .stabs "vmt:33",160,0,54,-4 .stabs "$t:p10",160,0,0,-8 # Temps allocated between ebp-88 and ebp-8 .stabs "test.pas",132,0,0,.Lf7 .Lf7: .stabn 68,0,128,.Ll21 - P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 .Ll21: # [128] begin pushl %ebp movl %esp,%ebp subl $88,%esp # Var $vmt located at ebp-4 # Var $self located at ebp-8 movl %eax,-8(%ebp) movl %edx,-4(%ebp) .stabn 68,0,128,.Ll22 - P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 .Ll22: movl -4(%ebp),%eax cmpl $1,%eax ja .Lj81 jmp .Lj82 .Lj81: movl -4(%ebp),%eax movl -4(%ebp),%edx call *52(%edx) movl %eax,-8(%ebp) .Lj82: movl -8(%ebp),%eax testl %eax,%eax je .Lj87 jmp .Lj88 .Lj87: jmp .Lj79 .Lj88: .stabn 68,0,131,.Ll23 - P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 .Ll23: # [131] end; leal -20(%ebp),%ecx leal -44(%ebp),%edx movl $1,%eax call FPC_PUSHEXCEPTADDR call FPC_SETJMP pushl %eax testl %eax,%eax jne .Lj91 leal -60(%ebp),%ecx leal -84(%ebp),%edx movl $1,%eax call FPC_PUSHEXCEPTADDR call FPC_SETJMP pushl %eax testl %eax,%eax jne .Lj95 .stabn 68,0,129,.Ll24 - P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 .Ll24: # [129] Name:=3D'TClass2 instance'; movl -8(%ebp),%eax leal 4(%eax),%eax movl $_$TESTPROGRAM$_Ld2,%ecx movl $255,%edx call fpc_shortstr_to_shortstr .stabn 68,0,130,.Ll25 - P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 .Ll25: # [130] X:=3D7; movl -8(%ebp),%eax movl $7,260(%eax) .Lj95: call FPC_POPADDRSTACK popl %eax testl %eax,%eax je .Lj96 call FPC_RERAISE .Lj96: .stabn 68,0,131,.Ll26 - P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 .Ll26: movl -8(%ebp),%eax testl %eax,%eax jne .Lj108 jmp .Lj107 .Lj108: movl -4(%ebp),%eax testl %eax,%eax jne .Lj106 jmp .Lj107 .Lj106: movl -8(%ebp),%eax movl -8(%ebp),%edx movl (%edx),%edx call *68(%edx) .Lj107: .Lj91: call FPC_POPADDRSTACK popl %eax testl %eax,%eax je .Lj93 leal -60(%ebp),%ecx leal -88(%ebp),%edx movl $1,%eax call FPC_PUSHEXCEPTADDR call FPC_SETJMP pushl %eax testl %eax,%eax jne .Lj112 movl -4(%ebp),%eax testl %eax,%eax jne .Lj113 jmp .Lj114 .Lj113: movl -8(%ebp),%eax movl $-1,%edx movl -8(%ebp),%ecx movl (%ecx),%ecx call *48(%ecx) .Lj114: call FPC_POPADDRSTACK call FPC_RERAISE .Lj112: call FPC_POPADDRSTACK popl %eax testl %eax,%eax je .Lj111 call FPC_POPSECONDOBJECTSTACK call FPC_DESTROYEXCEPTION call FPC_RERAISE .Lj111: call FPC_POPOBJECTSTACK call FPC_DESTROYEXCEPTION jmp .Lj93 .Lj93: .Lj79: movl -8(%ebp),%eax leave ret .stabn 192,0,0,P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2-P$TESTPROGRAM_TCLA= SS2_$__CREATE$$TCLASS2 .stabn 224,0,0,.Lt8-P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 .Lt8: .section .text.n_p$testprogram_func1$word$word$boolean$trecord$$shortint,"x" .balign 16,0x90 .globl P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHORTINT P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHORTINT: .stabs "FUNC1:F41",36,0,133,P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$= $SHORTINT .stabs "X:R15",64,0,133,0 .stabs "X:15",160,0,133,-4 .stabs "Z:R15",64,0,133,2 .stabs "Z:15",160,0,133,-8 .stabs "Y:v17",160,0,133,-12 .stabs "R:v18",160,0,133,8 .stabs "result:41",160,0,133,-16 .stabs "LOC:20",160,0,135,-272 # Temps allocated between ebp-272 and ebp-272 .stabs "test.pas",132,0,0,.Lf8 .Lf8: .stabn 68,0,151,.Ll27 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHO= RTINT .Ll27: # [151] begin pushl %ebp movl %esp,%ebp subl $272,%esp # Var x located at ebp-4 # Var z located at ebp-8 # Var y located at ebp-12 # Var r located at ebp+8 # Var $result located at ebp-16 # Var loc located at ebp-272 movw %ax,-4(%ebp) movw %dx,-8(%ebp) movl %ecx,-12(%ebp) .stabn 68,0,152,.Ll28 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHO= RTINT .Ll28: # [152] loc:=3D'This is a string'; leal -272(%ebp),%eax movl $_$TESTPROGRAM$_Ld3,%ecx movl $255,%edx call fpc_shortstr_to_shortstr .stabn 68,0,153,.Ll29 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHO= RTINT .Ll29: # [153] if Hello=3D0 then X:=3D0 else X:=3D1; movzwl U_P$TESTPROGRAM_HELLO,%eax testl %eax,%eax je .Lj131 jmp .Lj132 .Lj131: movw $0,-4(%ebp) jmp .Lj135 .Lj132: movw $1,-4(%ebp) .Lj135: .stabn 68,0,154,.Ll30 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHO= RTINT .Ll30: # [154] test_local(0,2); movl %ebp,%eax movl $2,%ecx movl $0,%edx call P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT$LONGINT .stabn 68,0,155,.Ll31 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHO= RTINT .Ll31: # [155] indirect_call; movl %ebp,%eax call P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL .stabn 68,0,156,.Ll32 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHO= RTINT .Ll32: # [156] Func1:=3DX; movb -4(%ebp),%al movb %al,-16(%ebp) .stabn 68,0,157,.Ll33 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHO= RTINT .Ll33: # [157] end; movb -16(%ebp),%al leave ret $4 .stabs "FUNC1:X41",160,0,0,-16 .stabs "RESULT:X41",160,0,0,-16 .stabn 192,0,0,P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHORTINT-P$T= ESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHORTINT .stabn 224,0,0,.Lt9-P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHORTINT .Lt9: .section .text.n_p$testprogram_func1$crce9eb7fd8_indirect_call,"x" .balign 16,0x90 .globl P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL: .stabs "INDIRECT_CALL:F39,INDIRECT_CALL,FUNC1",36,0,144,P$TESTPROGRAM_FUNC= 1$crcE9EB7FD8_INDIRECT_CALL .stabs "parentfp:R33",64,0,144,0 .stabs "parentfp:33",160,0,144,-4 .stabs "LOC:38",160,0,146,-8 # Temps allocated between ebp-8 and ebp-8 .stabs "test.pas",132,0,0,.Lf9 .Lf9: .stabn 68,0,147,.Ll34 - P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL .Ll34: # [147] begin pushl %ebp movl %esp,%ebp subl $8,%esp # Var $parentfp located at ebp-4 # Var loc located at ebp-8 movl %eax,-4(%ebp) .stabn 68,0,148,.Ll35 - P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL .Ll35: # [148] loc:=3D1; movl $1,-8(%ebp) .stabn 68,0,149,.Ll36 - P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL .Ll36: # [149] test_local(5,7); movl -4(%ebp),%eax movl $7,%ecx movl $5,%edx call P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT$LONGINT .stabn 68,0,150,.Ll37 - P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL .Ll37: # [150] end; leave ret .stabn 192,0,0,P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL-P$TESTPROGRAM= _FUNC1$crcE9EB7FD8_INDIRECT_CALL .stabn 224,0,0,.Lt11-P$TESTPROGRAM_FUNC1$crcE9EB7FD8_INDIRECT_CALL .Lt11: .section .text.n_p$testprogram_func1$crce9eb7fd8_test_local$longint$longint= ,"x" .balign 16,0x90 .globl P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT$LONGINT P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT$LONGINT: .stabs "TEST_LOCAL:F39,TEST_LOCAL,FUNC1",36,0,137,P$TESTPROGRAM_FUNC1$crcE= 9EB7FD8_TEST_LOCAL$LONGINT$LONGINT .stabs "C:R38",64,0,137,2 .stabs "C:38",160,0,137,-4 .stabs "F:R38",64,0,137,1 .stabs "F:38",160,0,137,-8 .stabs "parentfp:R33",64,0,137,0 .stabs "parentfp:33",160,0,137,-12 # Temps allocated between ebp-20 and ebp-16 .stabs "test.pas",132,0,0,.Lf10 .Lf10: .stabn 68,0,140,.Ll38 - P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT= $LONGINT .Ll38: # [140] begin pushl %ebp movl %esp,%ebp subl $20,%esp movl %ebx,-20(%ebp) # Var c located at ebp-4 # Var f located at ebp-8 # Var $parentfp located at ebp-12 # Var int_loc located at ebp-16 movl %eax,-12(%ebp) movl %edx,-4(%ebp) movl %ecx,-8(%ebp) .stabn 68,0,141,.Ll39 - P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT= $LONGINT .Ll39: # [141] Writeln('dummy for browser'); call fpc_get_output movl %eax,%ebx movl %ebx,%edx movl $_$TESTPROGRAM$_Ld4,%ecx movl $0,%eax call fpc_write_text_shortstr call FPC_IOCHECK movl %ebx,%eax call fpc_writeln_end call FPC_IOCHECK .stabn 68,0,142,.Ll40 - P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT= $LONGINT .Ll40: # [142] end; movl -20(%ebp),%ebx leave ret .stabn 192,0,0,P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT$LONGINT-= P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT$LONGINT .stabn 224,0,0,.Lt10-P$TESTPROGRAM_FUNC1$crcE9EB7FD8_TEST_LOCAL$LONGINT$LO= NGINT .Lt10: .section .text.n__main,"x" .balign 16,0x90 .globl PASCALMAIN PASCALMAIN: .globl _main _main: .stabs "main:F39",36,0,12,_main # Temps allocated between ebp-60 and ebp+0 .stabs "test.pas",132,0,0,.Lf11 .Lf11: .stabn 68,0,162,.Ll41 - _main .Ll41: # [162] BEGIN pushl %ebp movl %esp,%ebp subl $60,%esp movl %ebx,-60(%ebp) movl %esi,-56(%ebp) call FPC_INITIALIZEUNITS .stabn 68,0,162,.Ll42 - _main .Ll42: movl $0,-52(%ebp) movl $0,-48(%ebp) leal -12(%ebp),%ecx leal -36(%ebp),%edx movl $1,%eax call FPC_PUSHEXCEPTADDR call FPC_SETJMP pushl %eax testl %eax,%eax jne .Lj166 .stabn 68,0,174,.Ll43 - _main .Ll43: # [174] for i:=3Dlow(ExtendedArray) to high(ExtendedArray) do movl $1,U_P$TESTPROGRAM_I decl U_P$TESTPROGRAM_I .balign 4,0x90 .Lj171: incl U_P$TESTPROGRAM_I .stabn 68,0,175,.Ll44 - _main .Ll44: # [175] ExtendedArray[i]:=3Di; movl U_P$TESTPROGRAM_I,%eax imull $10,%eax fildl U_P$TESTPROGRAM_I fstpt U_P$TESTPROGRAM_EXTENDEDARRAY-10(,%eax) cmpl $2000,U_P$TESTPROGRAM_I jl .Lj171 .stabn 68,0,176,.Ll45 - _main .Ll45: # [176] for i:=3Dlow(ExtendedPackedArray) to high(ExtendedPackedArray) do movl $1,U_P$TESTPROGRAM_I decl U_P$TESTPROGRAM_I .balign 4,0x90 .Lj176: incl U_P$TESTPROGRAM_I .stabn 68,0,177,.Ll46 - _main .Ll46: # [177] ExtendedPackedArray[i]:=3Di; movl U_P$TESTPROGRAM_I,%eax imull $10,%eax fildl U_P$TESTPROGRAM_I fstpt U_P$TESTPROGRAM_EXTENDEDPACKEDARRAY-10(,%eax) cmpl $2000,U_P$TESTPROGRAM_I jl .Lj176 .stabn 68,0,179,.Ll47 - _main .Ll47: # [179] for i:=3D1 to 10 do movl $1,U_P$TESTPROGRAM_I decl U_P$TESTPROGRAM_I .balign 4,0x90 .Lj181: incl U_P$TESTPROGRAM_I .stabn 68,0,180,.Ll48 - _main .Ll48: # [180] for j:=3D1 to 10 do movl $1,U_P$TESTPROGRAM_J decl U_P$TESTPROGRAM_J .balign 4,0x90 .Lj184: incl U_P$TESTPROGRAM_J .stabn 68,0,181,.Ll49 - _main .Ll49: # [181] SingleArrayArray[i,j]:=3Di*j; movl U_P$TESTPROGRAM_I,%edx movl U_P$TESTPROGRAM_J,%eax imull %eax,%edx movl %edx,-44(%ebp) fildl -44(%ebp) movl U_P$TESTPROGRAM_I,%eax imull $40,%eax movl U_P$TESTPROGRAM_J,%edx fstps U_P$TESTPROGRAM_SINGLEARRAYARRAY-44(%eax,%edx,4) cmpl $10,U_P$TESTPROGRAM_J jl .Lj184 cmpl $10,U_P$TESTPROGRAM_I jl .Lj181 .stabn 68,0,183,.Ll50 - _main .Ll50: # [183] ClassVar1:=3DTClass2.create; movl $VMT_P$TESTPROGRAM_TCLASS2,%edx movl $0,%eax call P$TESTPROGRAM_TCLASS2_$__CREATE$$TCLASS2 movl %eax,U_P$TESTPROGRAM_CLASSVAR1 .stabn 68,0,184,.Ll51 - _main .Ll51: # [184] Obj1.Init; movl $VMT_P$TESTPROGRAM_TOBJ,%edx movl $U_P$TESTPROGRAM_OBJ1,%eax call P$TESTPROGRAM_TOBJ_$__INIT$$LONGBOOL .stabn 68,0,185,.Ll52 - _main .Ll52: # [185] pointer2:=3D@Obj1; movl $U_P$TESTPROGRAM_OBJ1,%eax movl %eax,U_P$TESTPROGRAM_POINTER2 .stabn 68,0,186,.Ll53 - _main .Ll53: # [186] Writeln('Obj1.Z=3D',Obj1.Z); call fpc_get_output movl %eax,%ebx movl %ebx,%edx movl $_$TESTPROGRAM$_Ld5,%ecx movl $0,%eax call fpc_write_text_shortstr call FPC_IOCHECK movl U_P$TESTPROGRAM_OBJ1,%ecx movl %ebx,%edx movl $0,%eax call fpc_write_text_sint call FPC_IOCHECK movl %ebx,%eax call fpc_writeln_end call FPC_IOCHECK .stabn 68,0,187,.Ll54 - _main .Ll54: # [187] Obj1.done; movl $U_P$TESTPROGRAM_OBJ1,%eax movl $0,%edx movl $U_P$TESTPROGRAM_OBJ1,%ecx movl 4(%ecx),%ecx call *16(%ecx) .stabn 68,0,188,.Ll55 - _main .Ll55: # [188] X:=3Dnil; movl $0,U_P$TESTPROGRAM_X .stabn 68,0,190,.Ll56 - _main .Ll56: # [190] for i:=3D1 to 2000 do movl $1,U_P$TESTPROGRAM_I decl U_P$TESTPROGRAM_I .balign 4,0x90 .Lj223: incl U_P$TESTPROGRAM_I .stabn 68,0,191,.Ll57 - _main .Ll57: # [191] CharArray[i]:=3Dchr(32+(i mod (255-32))); movl U_P$TESTPROGRAM_I,%eax cltd movl $223,%ecx idivl %ecx addl $32,%edx movl U_P$TESTPROGRAM_I,%eax movb %dl,U_P$TESTPROGRAM_CHARARRAY-1(,%eax,1) cmpl $2000,U_P$TESTPROGRAM_I jl .Lj223 .stabn 68,0,192,.Ll58 - _main .Ll58: # [192] writeln('Hello world!'); call fpc_get_output movl %eax,%ebx movl %ebx,%edx movl $_$TESTPROGRAM$_Ld6,%ecx movl $0,%eax call fpc_write_text_shortstr call FPC_IOCHECK movl %ebx,%eax call fpc_writeln_end call FPC_IOCHECK .stabn 68,0,193,.Ll59 - _main .Ll59: # [193] Writeln('ParamCount =3D ',ParamCount); call fpc_get_output movl %eax,%ebx movl %ebx,%edx movl $_$TESTPROGRAM$_Ld7,%ecx movl $0,%eax call fpc_write_text_shortstr call FPC_IOCHECK call SYSTEM_PARAMCOUNT$$LONGINT movl %eax,%ecx movl %ebx,%edx movl $0,%eax call fpc_write_text_sint call FPC_IOCHECK movl %ebx,%eax call fpc_writeln_end call FPC_IOCHECK .stabn 68,0,194,.Ll60 - _main .Ll60: # [194] For i:=3D0 to paramcount do call SYSTEM_PARAMCOUNT$$LONGINT movl %eax,%ebx movl $0,U_P$TESTPROGRAM_I cmpl U_P$TESTPROGRAM_I,%ebx jl .Lj253 decl U_P$TESTPROGRAM_I .balign 4,0x90 .Lj254: incl U_P$TESTPROGRAM_I .stabn 68,0,195,.Ll61 - _main .Ll61: # [195] writeln('Paramstr(',i,') =3D '+Paramstr(i)); call fpc_get_output movl %eax,%esi movl %esi,%edx movl $_$TESTPROGRAM$_Ld8,%ecx movl $0,%eax call fpc_write_text_shortstr call FPC_IOCHECK movl U_P$TESTPROGRAM_I,%ecx movl %esi,%edx movl $0,%eax call fpc_write_text_sint call FPC_IOCHECK leal -48(%ebp),%eax call FPC_ANSISTR_DECR_REF movl $0,-48(%ebp) leal -52(%ebp),%eax call FPC_ANSISTR_DECR_REF movl $0,-52(%ebp) leal -52(%ebp),%edx movl U_P$TESTPROGRAM_I,%eax call OBJPAS_PARAMSTR$LONGINT$$ANSISTRING movl -52(%ebp),%ecx leal -48(%ebp),%eax movl $_$TESTPROGRAM$_Ld9,%edx call fpc_ansistr_concat movl -48(%ebp),%ecx movl %esi,%edx movl $0,%eax call fpc_write_text_ansistr call FPC_IOCHECK movl %esi,%eax call fpc_writeln_end call FPC_IOCHECK cmpl U_P$TESTPROGRAM_I,%ebx jg .Lj254 .Lj253: .stabn 68,0,196,.Ll62 - _main .Ll62: # [196] writeln(IsOdd(3)); call fpc_get_output movl %eax,%esi movw $3,%ax call TEST2_ISODD$SMALLINT$$BOOLEAN movb %al,%cl movl %esi,%eax movl $0,%ebx movl %eax,%edx movl %ebx,%eax call fpc_write_text_boolean call FPC_IOCHECK movl %esi,%eax call fpc_writeln_end call FPC_IOCHECK .stabn 68,0,197,.Ll63 - _main .Ll63: # [197] writeln(Func1(5,5,Bool,T)); call fpc_get_output movl %eax,%ebx pushl $U_P$TESTPROGRAM_T movl $U_P$TESTPROGRAM_BOOL,%ecx movw $5,%dx movw $5,%ax call P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHORTINT movb %al,%cl movsbl %cl,%ecx movl %ebx,%edx movl $0,%eax call fpc_write_text_sint call FPC_IOCHECK movl %ebx,%eax call fpc_writeln_end call FPC_IOCHECK .stabn 68,0,198,.Ll64 - _main .Ll64: # [198] new(X); movl $8,%eax call fpc_getmem movl %eax,U_P$TESTPROGRAM_X .stabn 68,0,199,.Ll65 - _main .Ll65: # [199] new(X^.next); movl $8,%eax call fpc_getmem movl U_P$TESTPROGRAM_X,%edx movl %eax,4(%edx) .stabn 68,0,200,.Ll66 - _main .Ll66: # [200] X^.next^.next:=3DX; movl U_P$TESTPROGRAM_X,%eax movl 4(%eax),%eax movl U_P$TESTPROGRAM_X,%edx movl %edx,4(%eax) .stabn 68,0,201,.Ll67 - _main .Ll67: # [201] dispose(X); movl U_P$TESTPROGRAM_X,%eax call fpc_freemem .stabn 68,0,204,.Ll68 - _main .Ll68: # [204] if (TestOne<>1) or (TestOne(5)<>5) or (TestOne('6')<>6) then call TEST1_TESTONE$$LONGINT cmpl $1,%eax jne .Lj333 jmp .Lj336 .Lj336: movl $5,%eax call TEST1_TESTONE$LONGINT$$LONGINT cmpl $5,%eax jne .Lj333 jmp .Lj335 .Lj335: movl $_$TESTPROGRAM$_Ld10,%eax call TEST1_TESTONE$SHORTSTRING$$LONGINT cmpl $6,%eax jne .Lj333 jmp .Lj334 .Lj333: .stabn 68,0,206,.Ll69 - _main .Ll69: # [206] Writeln('Error while testing TestOne function overloads'); call fpc_get_output movl %eax,%ebx movl %ebx,%edx movl $_$TESTPROGRAM$_Ld11,%ecx movl $0,%eax call fpc_write_text_shortstr call FPC_IOCHECK movl %ebx,%eax call fpc_writeln_end call FPC_IOCHECK .stabn 68,0,207,.Ll70 - _main .Ll70: # [207] RunError(200); movw $200,%ax call SYSTEM_RUNERROR$WORD .Lj334: .stabn 68,0,209,.Ll71 - _main .Ll71: # [209] Halt(4); movl $4,%eax call SYSTEM_HALT$LONGINT .Lj166: call FPC_POPADDRSTACK .stabn 68,0,210,.Ll72 - _main .Ll72: # [210] END. leal -52(%ebp),%eax call FPC_ANSISTR_DECR_REF movl $0,-52(%ebp) leal -48(%ebp),%eax call FPC_ANSISTR_DECR_REF movl $0,-48(%ebp) popl %eax testl %eax,%eax je .Lj167 call FPC_RERAISE .Lj167: .stabn 68,0,210,.Ll73 - _main .Ll73: call FPC_DO_EXIT movl -60(%ebp),%ebx movl -56(%ebp),%esi leave ret .stabn 192,0,0,_main-_main .stabn 224,0,0,.Lt1-_main .Lt1: .section .fpc.n_links .long DEBUGINFO_P$TESTPROGRAM .long DEBUGSTART_P$TESTPROGRAM .long DEBUGEND_P$TESTPROGRAM .long DEBUGINFO_TEST1 .long DEBUGSTART_TEST1 .long DEBUGEND_TEST1 .long DEBUGINFO_TEST2 .long DEBUGSTART_TEST2 .long DEBUGEND_TEST2 # End asmlist al_procedures # Begin asmlist al_globals .section .bss .balign 2 # [65] var Hello : word; .globl U_P$TESTPROGRAM_HELLO U_P$TESTPROGRAM_HELLO: .zero 2 .section .bss .balign 4 # [66] X: PRecord; .globl U_P$TESTPROGRAM_X U_P$TESTPROGRAM_X: .zero 4 .section .bss # [67] Bool: boolean; .globl U_P$TESTPROGRAM_BOOL U_P$TESTPROGRAM_BOOL: .zero 1 .section .bss .balign 4 # [68] T : TRecord; .globl U_P$TESTPROGRAM_T U_P$TESTPROGRAM_T: .zero 8 .section .bss # [69] Str20 : string[20]; .globl U_P$TESTPROGRAM_STR20 U_P$TESTPROGRAM_STR20: .zero 21 .section .bss # [70] Str255: string; .globl U_P$TESTPROGRAM_STR255 U_P$TESTPROGRAM_STR255: .zero 256 .section .bss .balign 2 # [71] ArrayW: array[2..45] of word; .globl U_P$TESTPROGRAM_ARRAYW U_P$TESTPROGRAM_ARRAYW: .zero 88 .section .bss .balign 4 # [72] ArrayVar: ArrayTyp; .globl U_P$TESTPROGRAM_ARRAYVAR U_P$TESTPROGRAM_ARRAYVAR: .zero 40 .section .bss .balign 4 # [73] EnumVar: (enumElem1,enumElem2,enumElem3); .globl U_P$TESTPROGRAM_ENUMVAR U_P$TESTPROGRAM_ENUMVAR: .zero 4 .section .bss .balign 4 # [74] EnumVar2: EnumTyp; .globl U_P$TESTPROGRAM_ENUMVAR2 U_P$TESTPROGRAM_ENUMVAR2: .zero 4 .section .bss .balign 16 # [75] FileVar: file; .globl U_P$TESTPROGRAM_FILEVAR U_P$TESTPROGRAM_FILEVAR: .zero 332 .section .bss .balign 16 # [76] FileVarR: file of TRecord; .globl U_P$TESTPROGRAM_FILEVARR U_P$TESTPROGRAM_FILEVARR: .zero 332 .section .bss .balign 16 # [77] FileVarW: file of word; .globl U_P$TESTPROGRAM_FILEVARW U_P$TESTPROGRAM_FILEVARW: .zero 332 .section .bss .balign 4 # [78] ProcVar: procedure; .globl U_P$TESTPROGRAM_PROCVAR U_P$TESTPROGRAM_PROCVAR: .zero 4 .section .bss .balign 4 # [79] ProcVarD: function(X: real): boolean; .globl U_P$TESTPROGRAM_PROCVARD U_P$TESTPROGRAM_PROCVARD: .zero 4 .section .bss .balign 4 # [80] ProcVarI: ProcTyp; .globl U_P$TESTPROGRAM_PROCVARI U_P$TESTPROGRAM_PROCVARI: .zero 4 .section .bss .balign 16 # [81] SetVarD: set of char; .globl U_P$TESTPROGRAM_SETVARD U_P$TESTPROGRAM_SETVARD: .zero 32 .section .bss .balign 4 # [82] SetVarI: SetTyp; .globl U_P$TESTPROGRAM_SETVARI U_P$TESTPROGRAM_SETVARI: .zero 4 .section .bss .balign 8 # [83] Float1: real; .globl U_P$TESTPROGRAM_FLOAT1 U_P$TESTPROGRAM_FLOAT1: .zero 8 .section .bss .balign 8 # [84] Float2: double; .globl U_P$TESTPROGRAM_FLOAT2 U_P$TESTPROGRAM_FLOAT2: .zero 8 .section .bss .balign 8 # [85] Float3: comp; .globl U_P$TESTPROGRAM_FLOAT3 U_P$TESTPROGRAM_FLOAT3: .zero 8 .section .bss .balign 16 # [86] Float4: extended; .globl U_P$TESTPROGRAM_FLOAT4 U_P$TESTPROGRAM_FLOAT4: .zero 10 .section .bss .balign 4 # [87] Pointer1: pointer; .globl U_P$TESTPROGRAM_POINTER1 U_P$TESTPROGRAM_POINTER1: .zero 4 .section .bss .balign 4 # [88] Pointer2: PObj; .globl U_P$TESTPROGRAM_POINTER2 U_P$TESTPROGRAM_POINTER2: .zero 4 .section .bss .balign 4 # [89] ClassVar1: TClass; .globl U_P$TESTPROGRAM_CLASSVAR1 U_P$TESTPROGRAM_CLASSVAR1: .zero 4 .section .bss .balign 4 # [90] ClassVar2: TClass2; .globl U_P$TESTPROGRAM_CLASSVAR2 U_P$TESTPROGRAM_CLASSVAR2: .zero 4 .section .bss .balign 4 # [91] Obj1: TObj; .globl U_P$TESTPROGRAM_OBJ1 U_P$TESTPROGRAM_OBJ1: .zero 8 .section .bss .balign 4 # [92] Obj2: TObj2; .globl U_P$TESTPROGRAM_OBJ2 U_P$TESTPROGRAM_OBJ2: .zero 8 .section .bss # [93] CharArray : Array[1..2000] of char; .globl U_P$TESTPROGRAM_CHARARRAY U_P$TESTPROGRAM_CHARARRAY: .zero 2000 .section .bss .balign 16 # [94] ExtendedArray : Array[1..2000] of extended; .globl U_P$TESTPROGRAM_EXTENDEDARRAY U_P$TESTPROGRAM_EXTENDEDARRAY: .zero 20000 .section .bss .balign 16 # [95] ExtendedPackedArray : packed Array[1..2000] of extended; .globl U_P$TESTPROGRAM_EXTENDEDPACKEDARRAY U_P$TESTPROGRAM_EXTENDEDPACKEDARRAY: .zero 20000 .section .bss .balign 4 # [96] SingleArrayArray : Array[1..10,1..10] of single; .globl U_P$TESTPROGRAM_SINGLEARRAYARRAY U_P$TESTPROGRAM_SINGLEARRAYARRAY: .zero 400 .section .bss .balign 4 # [159] var i,j : longint; .globl U_P$TESTPROGRAM_I U_P$TESTPROGRAM_I: .zero 4 .section .bss .balign 4 .globl U_P$TESTPROGRAM_J U_P$TESTPROGRAM_J: .zero 4 .section .bss .balign 4 # [160] Length : longint; .globl U_P$TESTPROGRAM_LENGTH U_P$TESTPROGRAM_LENGTH: .zero 4 .section .data.n_THREADVARLIST_P$TESTPROGRAM,"d" .balign 4 .globl THREADVARLIST_P$TESTPROGRAM THREADVARLIST_P$TESTPROGRAM: .long 0 .section .data.n_VMT_P$TESTPROGRAM_TOBJ,"d" .balign 4 .globl VMT_P$TESTPROGRAM_TOBJ VMT_P$TESTPROGRAM_TOBJ: .long 8,-8,0 .long P$TESTPROGRAM_TOBJ_$__PROC .long P$TESTPROGRAM_TOBJ_$__DONE .long 0 .section .data.n_VMT_P$TESTPROGRAM_TOBJ2,"d" .balign 4 .globl VMT_P$TESTPROGRAM_TOBJ2 VMT_P$TESTPROGRAM_TOBJ2: .long 8,-8 .long VMT_P$TESTPROGRAM_TOBJ .long P$TESTPROGRAM_TOBJ2_$__PROC .long P$TESTPROGRAM_TOBJ_$__DONE .long 0 .section .data.n_VMT_P$TESTPROGRAM_TOBJ3,"d" .balign 4 .globl VMT_P$TESTPROGRAM_TOBJ3 VMT_P$TESTPROGRAM_TOBJ3: .long 8,-8 .long VMT_P$TESTPROGRAM_TOBJ .long P$TESTPROGRAM_TOBJ_$__PROC .long P$TESTPROGRAM_TOBJ_$__DONE .long 0 .section .data.n_VMT_P$TESTPROGRAM_TOBJ32,"d" .balign 4 .globl VMT_P$TESTPROGRAM_TOBJ32 VMT_P$TESTPROGRAM_TOBJ32: .long 8,-8 .long VMT_P$TESTPROGRAM_TOBJ3 .long P$TESTPROGRAM_TOBJ_$__PROC .long P$TESTPROGRAM_TOBJ_$__DONE .long 0 .section .data.n_VMT_P$TESTPROGRAM_TOBJ4,"d" .balign 4 .globl VMT_P$TESTPROGRAM_TOBJ4 VMT_P$TESTPROGRAM_TOBJ4: .long 8,-8 .long VMT_P$TESTPROGRAM_TOBJ .long P$TESTPROGRAM_TOBJ_$__PROC .long P$TESTPROGRAM_TOBJ_$__DONE .long 0 .section .data.n__$TESTPROGRAM$_Ld12,"d" .balign 4 .globl _$TESTPROGRAM$_Ld12 _$TESTPROGRAM$_Ld12: .byte 6 .ascii "TClass" .section .data.n_VMT_P$TESTPROGRAM_TCLASS,"d" .balign 4 .globl VMT_P$TESTPROGRAM_TCLASS VMT_P$TESTPROGRAM_TCLASS: .long 260,-260 .long VMT_SYSTEM_TOBJECT .long _$TESTPROGRAM$_Ld12 .long 0,0 .long _$TESTPROGRAM$_Ld13 .long RTTI_P$TESTPROGRAM_TCLASS .long 0,0 .long FPC_EMPTYINTF .long 0 .long SYSTEM_TOBJECT_$__DESTROY .long SYSTEM_TOBJECT_$__NEWINSTANCE$$TOBJECT .long SYSTEM_TOBJECT_$__FREEINSTANCE .long SYSTEM_TOBJECT_$__SAFECALLEXCEPTION$TOBJECT$POINTER$$HRESULT .long SYSTEM_TOBJECT_$__DEFAULTHANDLER$formal .long SYSTEM_TOBJECT_$__AFTERCONSTRUCTION .long SYSTEM_TOBJECT_$__BEFOREDESTRUCTION .long SYSTEM_TOBJECT_$__DEFAULTHANDLERSTR$formal .long SYSTEM_TOBJECT_$__DISPATCH$formal .long SYSTEM_TOBJECT_$__DISPATCHSTR$formal .long SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN .long SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT .long SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING .long 0 .section .data.n__$TESTPROGRAM$_Ld15,"d" .balign 4 .globl _$TESTPROGRAM$_Ld15 _$TESTPROGRAM$_Ld15: .byte 7 .ascii "TClass2" .section .data.n_VMT_P$TESTPROGRAM_TCLASS2,"d" .balign 4 .globl VMT_P$TESTPROGRAM_TCLASS2 VMT_P$TESTPROGRAM_TCLASS2: .long 264,-264 .long VMT_P$TESTPROGRAM_TCLASS .long _$TESTPROGRAM$_Ld15 .long 0,0 .long _$TESTPROGRAM$_Ld16 .long RTTI_P$TESTPROGRAM_TCLASS2 .long 0,0 .long FPC_EMPTYINTF .long 0 .long SYSTEM_TOBJECT_$__DESTROY .long SYSTEM_TOBJECT_$__NEWINSTANCE$$TOBJECT .long SYSTEM_TOBJECT_$__FREEINSTANCE .long SYSTEM_TOBJECT_$__SAFECALLEXCEPTION$TOBJECT$POINTER$$HRESULT .long SYSTEM_TOBJECT_$__DEFAULTHANDLER$formal .long SYSTEM_TOBJECT_$__AFTERCONSTRUCTION .long SYSTEM_TOBJECT_$__BEFOREDESTRUCTION .long SYSTEM_TOBJECT_$__DEFAULTHANDLERSTR$formal .long SYSTEM_TOBJECT_$__DISPATCH$formal .long SYSTEM_TOBJECT_$__DISPATCHSTR$formal .long SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN .long SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT .long SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING .long 0 .section .data.n_INITFINAL,"d" .balign 4 .globl INITFINAL INITFINAL: .long 3,0 .long INIT$_SYSTEM .long 0 .long INIT$_FPINTRES .long 0,0 .long FINALIZE$_OBJPAS .section .data.n_FPC_THREADVARTABLES,"d" .balign 4 .globl FPC_THREADVARTABLES FPC_THREADVARTABLES: .long 7 .long THREADVARLIST_SYSTEM .long THREADVARLIST_FPINTRES .long THREADVARLIST_OBJPAS .long THREADVARLIST_TEST1 .long THREADVARLIST_TEST2 .long THREADVARLIST_SYSINITPAS .long THREADVARLIST_P$TESTPROGRAM .section .data.n_FPC_RESOURCESTRINGTABLES,"d" .balign 4 .globl FPC_RESOURCESTRINGTABLES FPC_RESOURCESTRINGTABLES: .long 0 .section .data.n_FPC_WIDEINITTABLES,"d" .balign 4 .globl FPC_WIDEINITTABLES FPC_WIDEINITTABLES: .long 0 .section .fpc.n_version .balign 16 .ascii "FPC 2.6.4 [2014/03/06] for i386 - Win32" .section .data.n___heapsize,"d" .balign 4 .globl __heapsize __heapsize: .long 0 .section .data.n___fpc_valgrind,"d" .globl __fpc_valgrind __fpc_valgrind: .byte 0 # End asmlist al_globals # Begin asmlist al_const # End asmlist al_const # Begin asmlist al_typedconsts .section .rodata.n__$TESTPROGRAM$_Ld1,"d" .balign 4 .globl _$TESTPROGRAM$_Ld1 _$TESTPROGRAM$_Ld1: .ascii "\017TClass instance\000" .section .rodata.n__$TESTPROGRAM$_Ld2,"d" .balign 4 .globl _$TESTPROGRAM$_Ld2 _$TESTPROGRAM$_Ld2: .ascii "\020TClass2 instance\000" .section .rodata.n__$TESTPROGRAM$_Ld3,"d" .balign 4 .globl _$TESTPROGRAM$_Ld3 _$TESTPROGRAM$_Ld3: .ascii "\020This is a string\000" .section .rodata.n__$TESTPROGRAM$_Ld4,"d" .balign 4 .globl _$TESTPROGRAM$_Ld4 _$TESTPROGRAM$_Ld4: .ascii "\021dummy for browser\000" .section .rodata.n__$TESTPROGRAM$_Ld5,"d" .balign 4 .globl _$TESTPROGRAM$_Ld5 _$TESTPROGRAM$_Ld5: .ascii "\007Obj1.Z=3D\000" .section .rodata.n__$TESTPROGRAM$_Ld6,"d" .balign 4 .globl _$TESTPROGRAM$_Ld6 _$TESTPROGRAM$_Ld6: .ascii "\014Hello world!\000" .section .rodata.n__$TESTPROGRAM$_Ld7,"d" .balign 4 .globl _$TESTPROGRAM$_Ld7 _$TESTPROGRAM$_Ld7: .ascii "\015ParamCount =3D \000" .section .rodata.n__$TESTPROGRAM$_Ld8,"d" .balign 4 .globl _$TESTPROGRAM$_Ld8 _$TESTPROGRAM$_Ld8: .ascii "\011Paramstr(\000" .section .data.n__$TESTPROGRAM$_Ld9,"d" .balign 4 .long -1,4 .globl _$TESTPROGRAM$_Ld9 _$TESTPROGRAM$_Ld9: .ascii ") =3D \000" .section .rodata.n__$TESTPROGRAM$_Ld10,"d" .balign 4 .globl _$TESTPROGRAM$_Ld10 _$TESTPROGRAM$_Ld10: .ascii "\0016\000" .section .rodata.n__$TESTPROGRAM$_Ld11,"d" .balign 4 .globl _$TESTPROGRAM$_Ld11 _$TESTPROGRAM$_Ld11: .ascii ".Error while testing TestOne function overloads\000" # End asmlist al_typedconsts # Begin asmlist al_rotypedconsts # End asmlist al_rotypedconsts # Begin asmlist al_threadvars # End asmlist al_threadvars # Begin asmlist al_imports # End asmlist al_imports # Begin asmlist al_exports # End asmlist al_exports # Begin asmlist al_resources # End asmlist al_resources # Begin asmlist al_rtti .section .data.n__$TESTPROGRAM$_Ld14,"d" .balign 4 .globl _$TESTPROGRAM$_Ld13 _$TESTPROGRAM$_Ld13: .short 0 .long _$TESTPROGRAM$_Ld14 .balign 4 .globl _$TESTPROGRAM$_Ld14 _$TESTPROGRAM$_Ld14: .short 0 .section .data.n_RTTI_P$TESTPROGRAM_TCLASS,"d" .balign 4 .globl RTTI_P$TESTPROGRAM_TCLASS RTTI_P$TESTPROGRAM_TCLASS: .byte 15,6 .ascii "TClass" .long VMT_P$TESTPROGRAM_TCLASS .long RTTI_SYSTEM_TOBJECT .short 0 .byte 11 .ascii "TestProgram" .short 0 .section .data.n__$TESTPROGRAM$_Ld17,"d" .balign 4 .globl _$TESTPROGRAM$_Ld16 _$TESTPROGRAM$_Ld16: .short 0 .long _$TESTPROGRAM$_Ld17 .balign 4 .globl _$TESTPROGRAM$_Ld17 _$TESTPROGRAM$_Ld17: .short 0 .section .data.n_RTTI_P$TESTPROGRAM_TCLASS2,"d" .balign 4 .globl RTTI_P$TESTPROGRAM_TCLASS2 RTTI_P$TESTPROGRAM_TCLASS2: .byte 15,7 .ascii "TClass2" .long VMT_P$TESTPROGRAM_TCLASS2 .long RTTI_P$TESTPROGRAM_TCLASS .short 0 .byte 11 .ascii "TestProgram" .short 0 # End asmlist al_rtti # Begin asmlist al_dwarf_frame # End asmlist al_dwarf_frame # Begin asmlist al_dwarf_info # End asmlist al_dwarf_info # Begin asmlist al_dwarf_abbrev # End asmlist al_dwarf_abbrev # Begin asmlist al_dwarf_line # End asmlist al_dwarf_line # Begin asmlist al_picdata # End asmlist al_picdata # Begin asmlist al_resourcestrings # End asmlist al_resourcestrings # Begin asmlist al_objc_data # End asmlist al_objc_data # Begin asmlist al_objc_pools # End asmlist al_objc_pools # Begin asmlist al_end .section .text.z_DEBUGEND_P$TESTPROGRAM,"x" .globl DEBUGEND_P$TESTPROGRAM DEBUGEND_P$TESTPROGRAM: .stabs "",100,0,0,.Lf13 .Lf13: # End asmlist al_end ------=_NextPart_000_0012_01D04306.72C82B10 Content-Type: application/octet-stream; name="test.pas" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test.pas" Content-length: 3915 {$mode objfpc} {$R-} program TestProgram; uses {$ifdef go32v2} dpmiexcp, {$endif} test1, Test2; const A = 1234; C = #1#2#3#4; ConstBool1 = true; ConstBool2 = boolean(5); ConstChar = 'A'; ConstSet = ['A'..'Z']; ConstSet2 = [15..254]; ConstFloat = 3.1415; {$i empty.inc} type PObj = ^TObj; TObj = object constructor Init; function Func: boolean; procedure Proc; virtual; destructor Done; virtual; private Z: integer; end; TObj2 = object(TObj) procedure Proc; virtual; end; TObj3 = object(TObj) end; TObj32 = object(TObj3) end; TObj4 = object(TObj) end; TClass = class name : string; constructor Create; end; TClass2 = class(TClass) X : longint; constructor Create; end; EnumTyp = (enum1,enum2,enum3); ArrayTyp = array[1..10] of EnumTyp; ProcTyp = function(A: word; var B: longint; const C: EnumTyp): real; SetTyp = set of EnumTyp; const ConstOrd = enum1; var Hello : word; X: PRecord; Bool: boolean; T : TRecord; Str20 : string[20]; Str255: string; ArrayW: array[2..45] of word; ArrayVar: ArrayTyp; EnumVar: (enumElem1,enumElem2,enumElem3); EnumVar2: EnumTyp; FileVar: file; FileVarR: file of TRecord; FileVarW: file of word; ProcVar: procedure; ProcVarD: function(X: real): boolean; ProcVarI: ProcTyp; SetVarD: set of char; SetVarI: SetTyp; Float1: real; Float2: double; Float3: comp; Float4: extended; Pointer1: pointer; Pointer2: PObj; ClassVar1: TClass; ClassVar2: TClass2; Obj1: TObj; Obj2: TObj2; CharArray : Array[1..2000] of char; ExtendedArray : Array[1..2000] of extended; ExtendedPackedArray : packed Array[1..2000] of extended; SingleArrayArray : Array[1..10,1..10] of single; constructor TObj.Init; begin Z:=1; end; function TObj.Func: boolean; begin Func:=true; end; procedure TObj.Proc; begin if Func=false then Halt; end; destructor TObj.Done; begin end; procedure TObj2.Proc; begin Z:=4; end; constructor TClass.Create; begin Name:='TClass instance'; end; constructor TClass2.Create; begin Name:='TClass2 instance'; X:=7; end; function Func1(x,z : word; var y : boolean; const r: TRecord): shortint; var loc : string; procedure test_local(c,f : longint); var int_loc : longint; begin Writeln('dummy for browser'); end; procedure indirect_call; var loc : longint; begin loc:=1; test_local(5,7); end; begin loc:='This is a string'; if Hello=0 then X:=0 else X:=1; test_local(0,2); indirect_call; Func1:=X; end; var i,j : longint; Length : longint; BEGIN {$ifdef m68k} asm beq @L13 bhi @L13 blo @L13 dbeq d0,@L13 dbcs d0,@L13 // dblo d0,@L13 @L13: end; {$endif} for i:=low(ExtendedArray) to high(ExtendedArray) do ExtendedArray[i]:=i; for i:=low(ExtendedPackedArray) to high(ExtendedPackedArray) do ExtendedPackedArray[i]:=i; for i:=1 to 10 do for j:=1 to 10 do SingleArrayArray[i,j]:=i*j; ClassVar1:=TClass2.create; Obj1.Init; pointer2:=@Obj1; Writeln('Obj1.Z=',Obj1.Z); Obj1.done; X:=nil; // fg for i:=1 to 2000 do CharArray[i]:=chr(32+(i mod (255-32))); writeln('Hello world!'); Writeln('ParamCount = ',ParamCount); For i:=0 to paramcount do writeln('Paramstr(',i,') = '+Paramstr(i)); writeln(IsOdd(3)); writeln(Func1(5,5,Bool,T)); new(X); new(X^.next); X^.next^.next:=X; dispose(X); { for i:=1 to 99 do Writeln('Line ',i); } if (TestOne<>1) or (TestOne(5)<>5) or (TestOne('6')<>6) then begin Writeln('Error while testing TestOne function overloads'); RunError(200); end; Halt(4); END. ------=_NextPart_000_0012_01D04306.72C82B10 Content-Type: application/octet-stream; name="test1.pas" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test1.pas" Content-length: 558 unit test1; {$mode objfpc} { dummy unit for test of dbx stabs info PM } interface function TestOne : longint; function TestOne(val : longint) : longint; overload; function TestOne(val : string) : longint; overload; implementation function TestOne : longint; begin result:=1; end; function TestOne(val : longint) : longint; overload; begin result:=val; end; function TestOne(val : string) : longint; overload; var value, error : longint; begin system.val(val,value,error); if error=0 then result:=value else result:=-1; end; end. ------=_NextPart_000_0012_01D04306.72C82B10 Content-Type: text/plain; name="test2.inc" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test2.inc" Content-length: 71 procedure ProcInsideIncFile; begin Writeln('Testing inc file'); end; ------=_NextPart_000_0012_01D04306.72C82B10 Content-Type: application/octet-stream; name="test2.pas" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test2.pas" Content-length: 392 {$L+} unit Test2; interface type PRecord = ^TRecord; TRecord = record Field1: longint; Next : PRecord; end; function IsOdd(X: integer): boolean; var TEST2_X : real; implementation function IsOdd(X: integer): boolean; var Z: byte; begin Z:=0; X:=Z*X{$ifdef cpui386}* Test8087{$endif}; IsOdd:=(X mod 2)=1; end; procedure static; begin end; END. ------=_NextPart_000_0012_01D04306.72C82B10--