* RE: [PATCH 4/5] Remove struct main_type.vptr_{fieldno,basetype}: TYPE_SPECIFIC_SELF_TYPE
2015-02-06 7:21 ` Doug Evans
@ 2015-02-07 17:47 ` Pierre Muller
0 siblings, 0 replies; 7+ messages in thread
From: Pierre Muller @ 2015-02-07 17:47 UTC (permalink / raw)
To: gdb-patches; +Cc: 'Doug Evans'
[-- Attachment #1: Type: text/plain, Size: 18701 bytes --]
Hi all,
I send to Doug in private an object file
together with the assembler file used to generate it for i386 mingw32 (PE object)
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 acceptable.
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=all.
I checked with a i386-linux,
I get the same internal error (I just need to use
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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
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, line 54.
Breakpoint 2 at 0x4578d4: file ../../../binutils-gdb/gdb/cli/cli-cmds.c, line 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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
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., eax) at 0x68c889.
Breakpoint 1, internal_error (file=0x7f4f8c <NS_INTEGER_POINTER_CONVERSION_BADNESS+204> "../../../binutils-gdb/gdb/gdbtypes.c", line=1204,
fmt=0x7f4f5e <NS_INTEGER_POINTER_CONVERSION_BADNESS+158> "%s: Assertion `%s' failed.") at ../../../binutils-gdb/gdb/common/errors.c:54
54 va_start (ap, fmt);
(top-gdb) bt
#0 internal_error (file=0x7f4f8c <NS_INTEGER_POINTER_CONVERSION_BADNESS+204> "../../../binutils-gdb/gdb/gdbtypes.c", line=1204,
fmt=0x7f4f5e <NS_INTEGER_POINTER_CONVERSION_BADNESS+158> "%s: Assertion `%s' failed.") at ../../../binutils-gdb/gdb/common/errors.c:54
#1 0x00570a5f in internal_type_self_type (type=0x801a8050) at ../../../binutils-gdb/gdb/gdbtypes.c:1204
#2 0x005e2d10 in read_member_functions (fip=0x2c2a354, pp=0x2c2a4c0, type=0x801a7f88, objfile=0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:2389
#3 0x005e578a in read_struct_type (pp=0x2c2a4c0, type=0x801a7f88, type_code=TYPE_CODE_STRUCT, objfile=0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:3555
#4 0x005e1f34 in read_type (pp=0x2c2a4c0, objfile=0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:2006
#5 0x005e0683 in define_symbol (valu=0,
string=0x8018ec27 ":Tt2=s8Z:/038,0,32;$vf2:48,32;INIT::49=##40;:__ct__4TOBJ7POINTER;2A.;FUNC::50=##17;:4TOBJ;2A.;PROC::51=##39;:4TOBJ;2A*0;2;;DONE::52=##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2;", desc=0, type=128, objfile=0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:1316
#6 0x005abfa6 in process_one_symbol (type=128, desc=0, valu=0,
name=0x8018ec27 ":Tt2=s8Z:/038,0,32;$vf2:48,32;INIT::49=##40;:__ct__4TOBJ7POINTER;2A.;FUNC::50=##17;:4TOBJ;2A.;PROC::51=##39;:4TOBJ;2A*0;2;;DONE::52=##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2;",
section_offsets=0x80189828, objfile=0x801568c8) at ../../../binutils-gdb/gdb/dbxread.c:3203
#7 0x005aaee9 in read_ofile_symtab (objfile=0x801568c8, pst=0x80190148) at ../../../binutils-gdb/gdb/dbxread.c:2601
#8 0x005aa961 in dbx_psymtab_to_symtab_1 (objfile=0x801568c8, pst=0x80190148) at ../../../binutils-gdb/gdb/dbxread.c:2418
#9 0x005aaa98 in dbx_read_symtab (self=0x80190148, objfile=0x801568c8) at ../../../binutils-gdb/gdb/dbxread.c:2471
#10 0x0051fa46 in psymtab_to_symtab (objfile=0x801568c8, pst=0x80190148) at ../../../binutils-gdb/gdb/psymtab.c:788
#11 0x0051f2d3 in psym_lookup_symbol (objfile=0x801568c8, block_index=0, name=0x8014b4f8 "main", domain=VAR_DOMAIN) at ../../../binutils-gdb/gdb/psymtab.c:520
#12 0x00518140 in lookup_symbol_via_quick_fns (objfile=0x801568c8, block_index=0, name=0x8014b4f8 "main", domain=VAR_DOMAIN) at ../../../binutils-gdb/gdb/symtab.c:2436
#13 0x00518488 in lookup_symbol_in_objfile (objfile=0x801568c8, block_index=0, name=0x8014b4f8 "main", domain=VAR_DOMAIN) at ../../../binutils-gdb/gdb/symtab.c:2604
#14 0x0051865f in lookup_symbol_global_iterator_cb (objfile=0x801568c8, cb_data=0x2c2a878) at ../../../binutils-gdb/gdb/symtab.c:2685
#15 0x0041bda5 in windows_iterate_over_objfiles_in_search_order (gdbarch=0x80149d10, cb=0x5185ef <lookup_symbol_global_iterator_cb>, cb_data=0x2c2a878, current_objfile=0x0)
at ../../../binutils-gdb/gdb/windows-tdep.c:452
#16 0x0056c548 in gdbarch_iterate_over_objfiles_in_search_order (gdbarch=0x80149d10, cb=0x5185ef <lookup_symbol_global_iterator_cb>, cb_data=0x2c2a878, current_objfile=0x0)
at ../../../binutils-gdb/gdb/gdbarch.c:4412
#17 0x00518777 in lookup_global_symbol (name=0x8014b4f8 "main", block=0x0, domain=VAR_DOMAIN) at ../../../binutils-gdb/gdb/symtab.c:2730
#18 0x005182b6 in basic_lookup_symbol_nonlocal (langdef=0x81be80 <c_language_defn>, name=0x8014b4f8 "main", block=0x0, domain=VAR_DOMAIN) at ../../../binutils-gdb/gdb/symtab.c:2530
#19 0x00517a76 in lookup_symbol_aux (name=0x8014b4f8 "main", block=0x0, domain=VAR_DOMAIN, language=language_c, is_a_field_of_this=0x0) at ../../../binutils-gdb/gdb/symtab.c:2148
#20 0x00517431 in lookup_symbol_in_language (name=0x8014b4f8 "main", block=0x0, domain=VAR_DOMAIN, lang=language_c, is_a_field_of_this=0x0) at ../../../binutils-gdb/gdb/symtab.c:1944
#21 0x00517476 in lookup_symbol (name=0x8014b4f8 "main", block=0x0, domain=VAR_DOMAIN, is_a_field_of_this=0x0) at ../../../binutils-gdb/gdb/symtab.c:1958
#22 0x00524c1e in set_initial_language () at ../../../binutils-gdb/gdb/symfile.c:1698
#23 0x005242ef in symbol_file_add_main_1 (args=0x2c2ac39 "/home/Pierre/pas/trunk/fpcsrc/ide/test.o", from_tty=1, flags=0) at ../../../binutils-gdb/gdb/symfile.c:1327
#24 0x00524290 in symbol_file_add_main (args=0x2c2ac39 "/home/Pierre/pas/trunk/fpcsrc/ide/test.o", from_tty=1) at ../../../binutils-gdb/gdb/symfile.c:1311
#25 0x005569e5 in catch_command_errors_const (command=0x524270 <symbol_file_add_main>, arg=0x2c2ac39 "/home/Pierre/pas/trunk/fpcsrc/ide/test.o", from_tty=1, mask=RETURN_MASK_ALL)
at ../../../binutils-gdb/gdb/main.c:396
#26 0x005578b6 in captured_main (data=0x2c2abb4) at ../../../binutils-gdb/gdb/main.c:1042
#27 0x00552b9d in catch_errors (func=0x556c36 <captured_main>, func_args=0x2c2abb4, errstring=0x7ea741 <__PRETTY_FUNCTION__.13998+168> "", mask=RETURN_MASK_ALL)
at ../../../binutils-gdb/gdb/exceptions.c:237
#28 0x00557c4b in gdb_main (args=0x2c2abb4) 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=2, argv=0x2c2abec) at ../../../binutils-gdb/gdb/gdb.c:32
(top-gdb) f 4
#4 0x005e1f34 in read_type (pp=0x2c2a4c0, objfile=0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:2006
2006 type = read_struct_type (pp, type, type_code, objfile);
(top-gdb) p pp
$1 = (char **) 0x2c2a4c0
(top-gdb) p *pp
$2 = 0x8018ec54 "__ct__4TOBJ7POINTER;2A.;FUNC::50=##17;:4TOBJ;2A.;PROC::51=##39;:4TOBJ;2A*0;2;;DONE::52=##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2;"
(top-gdb) f 3
#3 0x005e578a in read_struct_type (pp=0x2c2a4c0, type=0x801a7f88, type_code=TYPE_CODE_STRUCT, objfile=0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:3555
3555 || !read_member_functions (&fi, pp, type, objfile)
(top-gdb) p *type
$3 = {pointer_type = 0x0, reference_type = 0x0, chain = 0x801a7f88, instance_flags = 0, length = 8, main_type = 0x801a7fa0}
(top-gdb) p *type.main_type
$4 = {code = TYPE_CODE_STRUCT, flag_unsigned = 0, flag_nosign = 0, flag_stub = 0, flag_target_stub = 0, flag_static = 0, flag_prototyped = 0, flag_incomplete = 0, flag_varargs = 0,
flag_vector = 0, flag_stub_supported = 0, flag_gnu_ifunc = 0, flag_fixed_instance = 0, flag_objfile_owned = 1, flag_declared_class = 0, flag_flag_enum = 0,
type_specific_field = TYPE_SPECIFIC_CPLUS_STUFF, nfields = 2, name = 0x0, tag_name = 0x0, owner = {objfile = 0x801568c8, gdbarch = 0x801568c8}, target_type = 0x0, flds_bnds = {
fields = 0x801a7fd8, bounds = 0x801a7fd8}, type_specific = {cplus_stuff = 0x801a8008, gnat_stuff = 0x801a8008, floatformat = 0x801a8008, func_stuff = 0x801a8008, self_type = 0x801a8008},
data_location = 0x0}
(top-gdb) f 2
#2 0x005e2d10 in read_member_functions (fip=0x2c2a354, pp=0x2c2a4c0, type=0x801a7f88, objfile=0x801568c8) at ../../../binutils-gdb/gdb/stabsread.c:2389
2389 if (!TYPE_SELF_TYPE (new_sublist->fn_field.type))
(top-gdb) p new_sublist->fn_field.type
$5 = (struct type *) 0x801a8050
(top-gdb) p *new_sublist->fn_field.type
$6 = {pointer_type = 0x0, reference_type = 0x0, chain = 0x801a8050, instance_flags = 0, length = 1, main_type = 0x801a8068}
(top-gdb) p *new_sublist->fn_field.type.main_type
$7 = {code = TYPE_CODE_METHOD, flag_unsigned = 0, flag_nosign = 0, flag_stub = 1, flag_target_stub = 0, flag_static = 0, flag_prototyped = 0, flag_incomplete = 0, flag_varargs = 0,
flag_vector = 0, flag_stub_supported = 0, flag_gnu_ifunc = 0, flag_fixed_instance = 0, flag_objfile_owned = 1, flag_declared_class = 0, flag_flag_enum = 0,
type_specific_field = TYPE_SPECIFIC_NONE, nfields = 0, name = 0x0, tag_name = 0x0, owner = {objfile = 0x801568c8, gdbarch = 0x801568c8}, target_type = 0x80191708, flds_bnds = {fields = 0x0,
bounds = 0x0}, type_specific = {cplus_stuff = 0x0, gnat_stuff = 0x0, floatformat = 0x0, func_stuff = 0x0, self_type = 0x0}, data_location = 0x0}
(top-gdb) f 1
#1 0x00570a5f in internal_type_self_type (type=0x801a8050) at ../../../binutils-gdb/gdb/gdbtypes.c:1204
1204 gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FUNC);
(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) == TYPE_SPECIFIC_SELF_TYPE);
1202 return TYPE_MAIN_TYPE (type)->type_specific.self_type;
1203 case TYPE_CODE_METHOD:
1204 gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FUNC);
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é : vendredi 6 février 2015 08:20
> À : Pierre Muller
> Cc : gdb-patches@sourceware.org
> Objet : Re: [PATCH 4/5] Remove struct
> main_type.vptr_{fieldno,basetype}: TYPE_SPECIFIC_SELF_TYPE
>
> "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr> 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é : lundi 26 janvier 2015 01:07
> >> À : 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) = bar;
> >>
> >> One instead has to do:
> >>
> >> set_type_self_type (foo, bar);
> >>
> >> But I've left reading of the type to the macro:
> >>
> >> bar = 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) == TYPE_CODE_FUNC)
> >> + TYPE_CODE (new_sublist->fn_field.type) = TYPE_CODE_METHOD;
> >> + else
> >> + gdb_assert (TYPE_CODE (new_sublist->fn_field.type)
> >> + == 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...
>
> 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:
>
> gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FUNC);
>
> But it's hard to see how that would fail given the earlier check
> for TYPE_CODE_FUNC:
>
> if (TYPE_CODE (new_sublist->fn_field.type) == TYPE_CODE_FUNC)
> TYPE_CODE (new_sublist->fn_field.type) = TYPE_CODE_METHOD;
> else
> gdb_assert (TYPE_CODE (new_sublist->fn_field.type)
> == TYPE_CODE_METHOD);
>
> 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) =
> TYPE_SPECIFIC_FUNC.
> Ergo IWBN to reproduce this and see the details.
>
> I'm not saying there isn't a problem of course,
> just that I may need some help understanding it.
>
> Also, why couldn't internal_type_self_type return NULL?
>
> >> - TYPE_SELF_TYPE (new_sublist->fn_field.type) = type;
> >> + set_type_self_type (new_sublist->fn_field.type, type);
> >> new_sublist->fn_field.is_stub = 1;
> >> }
> >> +
> >> new_sublist->fn_field.physname = savestring (*pp, p - *pp);
> >> *pp = 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) !=
> 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)
> ==
> > TYPE_SPECIFIC_NONE)
> > set_type_self_type (new_sublist->fn_field.type,
> type);
> > new_sublist->fn_field.is_stub = 1;
> > }
[-- Attachment #2: test.s --]
[-- Type: text/plain, Size: 48251 bytes --]
.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=39",128,0,0,0
.stabs "SHORTINT:t41=r41;-128;127;",128,0,0,0
.stabs "WORD:t15=r15;0;65535;",128,0,0,0
.stabs "LONGINT:t38=r38;-2147483648;2147483647;",128,0,0,0
.stabs "BOOLEAN:t17=-21;",128,0,0,0
.stabs "LONGBOOL:t40=-23;",128,0,0,0
.stabs "CHAR:t42=-20;",128,0,0,0
.stabs "BYTE:t43=r43;0;255;",128,0,0,0
.stabs "SHORTSTRING:Tt20=s256length:43,0,8;st:ar43;1;255;42,8,2040;;",128,0,0,0
.stabs "DOUBLE:t30=r38;8;0;",128,0,0,0
.stabs "EXTENDED:t32=r38;10;0;",128,0,0,0
.stabs "POINTER:t33=*39",128,0,0,0
.stabs "file:Tt23=s332HANDLE: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,2048;;",128,0,0,0
.stabs "COMP:t31=r38;-8;0;",128,0,0,0
.stabs "REAL:t29=r38;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=s8FIELD1:38,0,32;NEXT:16,32,32;",128,0,0,0
.stabs "PRECORD:t16=*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=*20",128,0,0,0
.stabs ":t45=ar38;0;0;33",128,0,0,0
.stabs "__vtbl_ptr_type:Tt46=s2;",128,0,0,0
.stabs "pvmt:t47=*46",128,0,0,0
.stabs "vtblarray:t48=ar38;0;1;47",128,0,0,0
.stabs ":Tt2=s8Z:/038,0,32;$vf2:48,32;INIT::49=##40;:__ct__4TOBJ7POINTER;2A.;FUNC::50=##17;:4TOBJ;2A.;PROC::51=##39;:4TOBJ;2A*0;2;;DONE::52=##39;:__dt__4TOBJ7POINTER;2A*1;2;;;~%2;",128,0,0,0
.stabs "vmt_TESTPROGRAMTOBJ:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ
.stabs ":t1=*2",128,0,0,0
.stabs ":Tt3=s8!1,020,2;PROC::53=##39;:5TOBJ2;2A*0;3;;;~%2;",128,0,0,0
.stabs "vmt_TESTPROGRAMTOBJ2:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ2
.stabs ":Tt4=s8!1,020,2;;~%2;",128,0,0,0
.stabs "vmt_TESTPROGRAMTOBJ3:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ3
.stabs ":Tt5=s8!1,020,4;;~%2;",128,0,0,0
.stabs "vmt_TESTPROGRAMTOBJ32:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ32
.stabs ":Tt6=s8!1,020,2;;~%2;",128,0,0,0
.stabs "vmt_TESTPROGRAMTOBJ4:S46",38,0,0,VMT_P$TESTPROGRAM_TOBJ4
.stabs "TOBJECT:Tt54=s4$vf54:48,0;CREATE::56=##55;:__ct__7TOBJECT7POINTER;2A.;DESTROY::57=##39;:__dt__7TOBJECT7POINTER;2A*0;54;;NEWINSTANCE::58=##55;:11unnamedtype;2A*1;54;;FREEINSTANCE::59=##39;:7TOBJECT;2A*2;54;;SAFECALLEXCEPTION::60=##61;:7TOBJECT7TOBJECT7POINTER;2A*3;54;;DEFAULTHANDLER::62=##39;:7TOBJECT3var;2A*4;54;;FREE::63=##39;:7TOBJECT;2A.;INITINSTANCE::64=##55;:11unnamedtype7POINTER;2A.;CLEANUPINSTANCE::65=##39;:7TOBJECT;2A.;CLASSTYPE::66=##67;:11unnamedtype;2A.;CLASSINFO::68=##33;:11unnamedtype;2A.;CLASSNAME::69=##20;:11unnamedtype11SHORTSTRING;2A.;CLASSNAMEIS::70=##17;:11unnamedtype11SHORTSTRING;2A.;CLASSPARENT::71=##67;:11unnamedtype;2A.;INSTANCESIZE::72=##38;:11unnamedtype;2A.;INHERITSFROM::73=##17;:11unnamedtype6TCLASS;2A.;STRINGMESSAGETABLE::74=##75;:11unnamedtype;2A.;METHODADDRESS::76=##33;:11unnamedtype11SHORTSTRING;2A.;METHODNAME::77=##20;:11unnamedtype7POINTER11SHORTSTRING;2A.;FIELDADDRESS::78=##33;:7TOBJECT11SHORTSTRING;2A.;AFTERCONSTRUCTION::79=##39;:7TOBJECT;2A*5;54;;BEFOREDESTRUCTION::80=##39;:7TOBJECT;2A*6;54;;DEFAULTHANDLERSTR::81=##39;:7TOBJECT3var;2A*7;54;;DISPATCH::82=##39;:7TOBJECT3var;2A*8;54;;DISPATCHSTR::83=##39;:7TOBJECT3var;2A*9;54;;GETINTERFACE::84=##17;:7TOBJECT5TGUID3out;2A.;GETINTERFACEBYSTR::85=##17;:7TOBJECT11SHORTSTRING3out;2A.;GETINTERFACEWEAK::86=##17;:7TOBJECT5TGUID3out;2A.;GETINTERFACEENTRY::87=##88;:11unnamedtype5TGUID;2A.;GETINTERFACEENTRYBYSTR::89=##88;:11unnamedtype11SHORTSTRING;2A.;GETINTERFACETABLE::90=##91;:11unnamedtype;2A.;UNITNAME::92=##93;:11unnamedtype10ANSISTRING;2A.;EQUALS::94=##17;:7TOBJECT7TOBJECT;2A*10;54;;GETHASHCODE::95=##38;:7TOBJECT;2A*11;54;;TOSTRING::96=##93;:7TOBJECT10ANSISTRING;2A*12;54;;;~%54;",128,0,0,0
.stabs ":Tt55=*54",128,0,0,0
.stabs "vmt_SYSTEMTOBJECT:S46",38,0,0,VMT_SYSTEM_TOBJECT
.stabs "TCLASS:Tt7=s260!1,020,54;NAME:20,32,2048;CREATE::97=##8;:__ct__6TCLASS7POINTER;2A.;;~%54;",128,0,0,0
.stabs ":Tt8=*7",128,0,0,0
.stabs "vmt_TESTPROGRAMTCLASS:S46",38,0,0,VMT_P$TESTPROGRAM_TCLASS
.stabs "TCLASS2:Tt9=s264!1,020,7;X:38,2080,32;CREATE::98=##10;:__ct__7TCLASS27POINTER;2A.;;~%54;",128,0,0,0
.stabs ":Tt10=*9",128,0,0,0
.stabs "vmt_TESTPROGRAMTCLASS2:S46",38,0,0,VMT_P$TESTPROGRAM_TCLASS2
.stabs ":Tt11=eENUM1:0,ENUM2:1,ENUM3:2,;",128,0,0,0
.stabs ":t12=ar41;1;10;11",128,0,0,0
.stabs ":t13=*f29",128,0,0,0
.stabs ":t14=@s32;S11",128,0,0,0
.stabs ":Tt19=s21length:43,0,8;st:ar43;1;20;42,8,160;;",128,0,0,0
.stabs ":t21=ar41;2;45;15",128,0,0,0
.stabs ":Tt22=eENUMELEM1:0,ENUMELEM2:1,ENUMELEM3:2,;",128,0,0,0
.stabs ":Tt24=s332HANDLE: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,2048;;",128,0,0,0
.stabs ":Tt25=s332HANDLE: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,2048;;",128,0,0,0
.stabs ":t26=*f39",128,0,0,0
.stabs ":t27=*f17",128,0,0,0
.stabs ":t28=@s256;S42",128,0,0,0
.stabs "SMALLINT:t99=r99;-32768;32767;",128,0,0,0
.stabs ":t34=ar99;1;2000;42",128,0,0,0
.stabs ":t35=ar99;1;2000;32",128,0,0,0
.stabs ":t36=ar99;1;2000;32",128,0,0,0
.stabs "SINGLE:t100=r38;4;0;",128,0,0,0
.stabs ":t101=ar41;1;10;100",128,0,0,0
.stabs ":t37=ar41;1;10;101",128,0,0,0
# Defs - End Staticsymtable
.stabs "HRESULT:t61=r61;-2147483648;2147483647;",128,0,0,0
.stabs "pvmt:t47=*46",128,0,0,0
.stabs "PSHORTSTRING:t102=*20",128,0,0,0
.stabs "TMSGSTRTABLE:Tt103=s8NAME:102,0,32;METHOD:33,32,32;",128,0,0,0
.stabs ":t104=ar41;0;0;103",128,0,0,0
.stabs "TSTRINGMESSAGETABLE:Tt105=s12COUNT:38,0,32;MSGSTRTABLE:104,32,64;",128,0,0,0
.stabs "PSTRINGMESSAGETABLE:t75=*105",128,0,0,0
.stabs "LONGWORD:t106=r106;0;-1;",128,0,0,0
.stabs ":t107=ar41;0;7;43",128,0,0,0
.stabs ":t108=ar41;0;7;43",128,0,0,0
.stabs ":t109=ar41;0;5;43",128,0,0,0
.stabs "TGUID:Tt110=s16DATA1:106,0,32;DATA2:15,32,16;DATA3:15,48,16;DATA4: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_RESERVED:43,64,8;CLOCK_SEQ_LOW:43,72,8;NODE:109,80,48;",128,0,0,0
.stabs "PGUID:t111=*110",128,0,0,0
.stabs "TINTERFACEENTRYTYPE:Tt112=eETSTANDARD:0,ETVIRTUALMETHODRESULT:1,ETSTATICMETHODRESULT:2,ETFIELDVALUE:3,ETVIRTUALMETHODCLASS:4,ETSTATICMETHODCLASS:5,ETFIELDVALUECLASS:6,;",128,0,0,0
.stabs "TINTERFACEENTRY:Tt113=s20IID:111,0,32;VTABLE:33,32,32;IOFFSET:106,64,32;IIDSTR:102,96,32;ITYPE:112,128,32;__PAD_DUMMY:33,128,32;",128,0,0,0
.stabs "PINTERFACEENTRY:t88=*113",128,0,0,0
.stabs ":t114=ar41;0;0;113",128,0,0,0
.stabs "TINTERFACETABLE:Tt115=s24ENTRYCOUNT:106,0,32;ENTRIES:114,32,160;",128,0,0,0
.stabs "PINTERFACETABLE:t91=*115",128,0,0,0
.stabs "ANSISTRING:Tt93=*42",128,0,0,0
# Syms - Begin Staticsymtable
.stabs "A:c=i1234;",36,0,12,0
.stabs "C:c=s'\\001\\002\\003\\004';",36,0,13,0
.stabs "CONSTBOOL1:c=i1;",36,0,14,0
.stabs "CONSTBOOL2:c=i5;",36,0,15,0
.stabs "CONSTCHAR:c=i65;",36,0,16,0
.stabs "CONSTSET:c=i0;",36,0,17,0
.stabs "CONSTSET2:c=i0;",36,0,18,0
.stabs "CONSTFLOAT:c=r 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=i0;",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_EXTENDEDPACKEDARRAY
.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:=1;
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:=true;
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_$__FUNC$$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=false 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:=4;
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:='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$$TCLASS2
.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:='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:=7;
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_TCLASS2_$__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$$SHORTINT
.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$$SHORTINT
.Ll28:
# [152] loc:='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$$SHORTINT
.Ll29:
# [153] if Hello=0 then X:=0 else X:=1;
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$$SHORTINT
.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$$SHORTINT
.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$$SHORTINT
.Ll32:
# [156] Func1:=X;
movb -4(%ebp),%al
movb %al,-16(%ebp)
.stabn 68,0,157,.Ll33 - P$TESTPROGRAM_FUNC1$WORD$WORD$BOOLEAN$TRECORD$$SHORTINT
.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$TESTPROGRAM_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_FUNC1$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:=1;
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$crcE9EB7FD8_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$LONGINT
.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:=low(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]:=i;
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:=low(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]:=i;
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:=1 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:=1 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]:=i*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:=TClass2.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:=@Obj1;
movl $U_P$TESTPROGRAM_OBJ1,%eax
movl %eax,U_P$TESTPROGRAM_POINTER2
.stabn 68,0,186,.Ll53 - _main
.Ll53:
# [186] Writeln('Obj1.Z=',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:=nil;
movl $0,U_P$TESTPROGRAM_X
.stabn 68,0,190,.Ll56 - _main
.Ll56:
# [190] for i:=1 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]:=chr(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 = ',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:=0 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,') = '+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:=X;
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=\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 = \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 ") = \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
[-- Attachment #3: test.pas --]
[-- Type: application/octet-stream, Size: 3915 bytes --]
{$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.
[-- Attachment #4: test1.pas --]
[-- Type: application/octet-stream, Size: 558 bytes --]
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.
[-- Attachment #5: test2.inc --]
[-- Type: text/plain, Size: 71 bytes --]
procedure ProcInsideIncFile;
begin
Writeln('Testing inc file');
end;
[-- Attachment #6: test2.pas --]
[-- Type: application/octet-stream, Size: 392 bytes --]
{$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.
^ permalink raw reply [flat|nested] 7+ messages in thread