[fpc-devel] TDef flags

J. Gareth Moreton gareth at moreton-family.com
Sun Jul 4 12:59:04 CEST 2021


Okay, okay. Not too harsh, please.

I feel I don't yet know enough about defs and generics to properly fix 
this bug, only that the defs used aren't getting written out as debug 
information because of the df_generic flag being present.

In the attached .s file, you can search for the reference to .La17 on 
line 600 that refers to a generic def, related to the line 
"R.GetArr<single>;" in the source file.

(tw38827.lpr)

program tw38827;
{$mode delphi}

uses tw38827_u;

var R: TRec;
begin
   R.GetArr<single>;
end.

(tw38827_u.pas)

unit tw38827_u;

{$mode delphi}
interface
type
   TRec = record
     C: TArray<single>;
     function GetArr<T>: TArray<T>; inline;
   end;
implementation
function TRec.GetArr<T>: TArray<T>;
begin
   result := nil;
   case GetTypeKind(T) of
     tkFloat:
       if SizeOf(T) = SizeOf(Single) then result := C;
   end;
end;
end.

Gareth aka. Kit

On 04/07/2021 11:41, Sven Barth wrote:
> Am 03.07.2021 um 15:01 schrieb J. Gareth Moreton via fpc-devel:
>> Hi everyone,
>>
>> I'm trying to fix i38827, and am trying a few things.  One thing I've 
>> noticed is that some specializations have both the df_generic and 
>> df_specialization flags set, and the def missing from the debug 
>> information that raises the linker error is one such def. Manually 
>> removing the df_generic fixes the problem (since the presence of the 
>> flag stops it from being written to the debug information), but is 
>> there a situation where a def can legitimately have both flags set?
>>
>> To guess, I would say if a generic has multiple parameters and not 
>> all of them are specialized, then that makes a def that's both, but 
>> then a fully specialized generic type shouldn't have the generic flag 
>> any more, right?
>
> First of you *do not* modify defs when writing debug information. 
> Period. (except for fields that are *only* related to debug information)
>
> Second df_generic is set for any def *inside* a generic. The TArray<T> 
> is a specialization inside a generic thus it will have both flags set.
>
> Regards,
> Sven
>


-- 
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
-------------- next part --------------
	.file "tw38827.lpr"
# Begin asmlist al_begin

.section .debug_line
.Ldebug_linesection0:
.Ldebug_line0:

.section .debug_abbrev
.Ldebug_abbrevsection0:
.Ldebug_abbrev0:

.section .text.b_DEBUGSTART_$P$TW38827,"ax"
.globl	DEBUGSTART_$P$TW38827
DEBUGSTART_$P$TW38827:
# End asmlist al_begin
# Begin asmlist al_procedures

.section .text.n_p$tw38827_$$_getarr$1$crc84de8c0d$crcb6af655f$$tarray$1$crc84de8c0d,"ax"
	.balign 16,0x90
.globl	P$TW38827_$$_GETARR$1$CRC84DE8C0D$CRCB6AF655F$$TARRAY$1$CRC84DE8C0D
P$TW38827_$$_GETARR$1$CRC84DE8C0D$CRCB6AF655F$$TARRAY$1$CRC84DE8C0D:
.Lc2:
.seh_proc P$TW38827_$$_GETARR$1$CRC84DE8C0D$CRCB6AF655F$$TARRAY$1$CRC84DE8C0D
# path: C:\Users\garet\Documents\programming\error_test\
# file: tw38827_u.pas
# indx: 2
.Ll1:
	pushq	%rbp
.seh_pushreg %rbp
.Lc3:
	movq	%rsp,%rbp
.Lc4:
	leaq	-64(%rsp),%rsp
.seh_stackalloc 64
.seh_endprologue
	movq	%rcx,-8(%rbp)
	movq	%rdx,-16(%rbp)
.Ll2:
	movq	$0,-24(%rbp)
# Peephole Optimization: LeaMov2Lea done
	leaq	-24(%rbp),%r9
	leaq	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D(%rip),%rdx
	movq	-16(%rbp),%rcx
# Peephole Optimization: movq $1,%r8 -> movl $1,%r8d (immediate can be represented with just 32 bits)
	movl	$1,%r8d
	call	fpc_dynarray_setlength
.Ll3:
	leaq	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D(%rip),%r8
	movq	-8(%rbp),%rax
	movq	(%rax),%rdx
	movq	-16(%rbp),%rcx
	call	fpc_dynarray_assign
.Ll4:
	nop
	leaq	(%rbp),%rsp
	popq	%rbp
	ret
.seh_endproc
.Lc1:
.Lt2:
.Ll5:

.section .text.n_p$tw38827_$$_fin$00000004,"ax"
	.balign 16,0x90
.globl	P$TW38827_$$_fin$00000004
P$TW38827_$$_fin$00000004:
.Lc6:
.seh_proc P$TW38827_$$_fin$00000004
.Ll6:
	pushq	%rbp
.seh_pushreg %rbp
.Lc7:
	movq	%rcx,%rbp
.Lc8:
	leaq	-32(%rsp),%rsp
.seh_stackalloc 32
.seh_endprologue
.Ll7:
	leaq	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D(%rip),%rdx
	leaq	-8(%rbp),%rcx
	call	fpc_dynarray_clear
.Ll8:
	nop
	leaq	32(%rsp),%rsp
	popq	%rbp
.Lc9:
	ret
.seh_endproc
.Lc5:
.Lt5:
.Ll9:

.section .text.n_main,"ax"
	.balign 16,0x90
.globl	main
main:
.globl	PASCALMAIN
PASCALMAIN:
.Lc11:
.seh_proc main
.Ll10:
	pushq	%rbp
.seh_pushreg %rbp
.Lc12:
	movq	%rsp,%rbp
.Lc13:
	leaq	-48(%rsp),%rsp
.seh_stackalloc 48
.seh_endprologue
	call	fpc_initializeunits
.Ll11:
	movq	$0,-8(%rbp)
.Lj15:
	nop
.Lj11:
.Ll12:
	movq	$0,-16(%rbp)
# Peephole Optimization: LeaMov2Lea done
	leaq	-16(%rbp),%r9
	leaq	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D(%rip),%rdx
	leaq	-8(%rbp),%rcx
# Peephole Optimization: movq $1,%r8 -> movl $1,%r8d (immediate can be represented with just 32 bits)
	movl	$1,%r8d
	call	fpc_dynarray_setlength
	leaq	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D(%rip),%r8
	movq	U_$P$TW38827_$$_R(%rip),%rdx
	leaq	-8(%rbp),%rcx
	call	fpc_dynarray_assign
.Lj13:
.Ll13:
	nop
.Lj12:
	movq	%rbp,%rcx
	call	P$TW38827_$$_fin$00000004
.Ll14:
	call	fpc_do_exit
	nop
	ret
.seh_handler __FPC_specific_handler, at unwind
.seh_handlerdata
	.long	1
	.long	0
	.rva	.Lj11
	.rva	.Lj12
	.rva	P$TW38827_$$_fin$00000004

.section .text.n_main,"ax"
.seh_endproc
.Lc10:
.Lt1:
.Ll15:

.section .text.n_p$tw38827_$$_init_implicit$,"ax"
	.balign 16,0x90
.globl	P$TW38827_$$_init_implicit$
P$TW38827_$$_init_implicit$:
.globl	INIT$_$P$TW38827
INIT$_$P$TW38827:
.Lc15:
.seh_proc P$TW38827_$$_init_implicit$
	pushq	%rbp
.seh_pushreg %rbp
.Lc16:
	movq	%rsp,%rbp
.Lc17:
	leaq	-32(%rsp),%rsp
.seh_stackalloc 32
.seh_endprologue
# Peephole Optimization: LeaMov2Lea done
	leaq	U_$P$TW38827_$$_R(%rip),%rcx
	leaq	INIT_$TW38827_U_$$_TREC(%rip),%rdx
	call	fpc_initialize
	nop
	leaq	(%rbp),%rsp
	popq	%rbp
	ret
.seh_endproc
.Lc14:
.Lt3:
.Ll16:

.section .text.n_p$tw38827_$$_finalize_implicit$,"ax"
	.balign 16,0x90
.globl	P$TW38827_$$_finalize_implicit$
P$TW38827_$$_finalize_implicit$:
.globl	FINALIZE$_$P$TW38827
FINALIZE$_$P$TW38827:
.globl	PASCALFINALIZE
PASCALFINALIZE:
.Lc19:
.seh_proc P$TW38827_$$_finalize_implicit$
	pushq	%rbp
.seh_pushreg %rbp
.Lc20:
	movq	%rsp,%rbp
.Lc21:
	leaq	-32(%rsp),%rsp
.seh_stackalloc 32
.seh_endprologue
# Peephole Optimization: LeaMov2Lea done
	leaq	U_$P$TW38827_$$_R(%rip),%rcx
	leaq	INIT_$TW38827_U_$$_TREC(%rip),%rdx
	call	fpc_finalize
	nop
	leaq	(%rbp),%rsp
	popq	%rbp
	ret
.seh_endproc
.Lc18:
.Lt4:
.Ll17:

.section .fpc.n_links,"aw"
	.quad	DEBUGSTART_$P$TW38827
	.quad	DEBUGEND_$P$TW38827
	.quad	DEBUGSTART_$TW38827_U
	.quad	DEBUGEND_$TW38827_U
# End asmlist al_procedures
# Begin asmlist al_globals

.section .bss,"aw"
	.balign 8
	.globl U_$P$TW38827_$$_R
U_$P$TW38827_$$_R:
	.zero 8

.section .data.n_INITFINAL,"aw"
	.balign 8
.globl	INITFINAL
INITFINAL:
	.quad	5,0
	.quad	INIT$_$SYSTEM
	.quad	FINALIZE$_$SYSTEM
	.quad	0
	.quad	FINALIZE$_$OBJPAS
	.quad	INIT$_$LNFODWRF
	.quad	FINALIZE$_$LNFODWRF
	.quad	INIT$_$FPINTRES
	.quad	0
	.quad	INIT$_$P$TW38827
	.quad	FINALIZE$_$P$TW38827

.section .data.n_FPC_THREADVARTABLES,"aw"
	.balign 8
.globl	FPC_THREADVARTABLES
FPC_THREADVARTABLES:
	.long	1
	.byte	0,0,0,0
	.quad	THREADVARLIST_$SYSTEM$indirect

.section .rodata.n_FPC_RESOURCESTRINGTABLES,"aw"
	.balign 8
.globl	FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES:
	.quad	0

.section .data.n_FPC_WIDEINITTABLES,"aw"
	.balign 8
.globl	FPC_WIDEINITTABLES
FPC_WIDEINITTABLES:
	.quad	0

.section .data.n_FPC_RESSTRINITTABLES,"aw"
	.balign 8
.globl	FPC_RESSTRINITTABLES
FPC_RESSTRINITTABLES:
	.quad	0

.section .fpc.n_version,"aw"
	.balign 16
__fpc_ident:
	.ascii	"FPC 3.3.1 [2021/07/04] for x86_64 - Win64"

.section .data.n___heapsize,"aw"
	.balign 8
.globl	__heapsize
__heapsize:
	.quad	0

.section .data.n___fpc_valgrind,"aw"
	.balign 8
.globl	__fpc_valgrind
__fpc_valgrind:
	.byte	0
# End asmlist al_globals
# Begin asmlist al_rtti

.section .rodata.n_RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D,"aw"
	.balign 8
.globl	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D
RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D:
	.byte	21,20
	.ascii	"TArray$1$crc84DE8C0D"
	.quad	0,4
	.quad	RTTI_$SYSTEM_$$_SINGLE$indirect
	.long	4
	.quad	0
	.byte	7
	.ascii	"tw38827"
# End asmlist al_rtti
# Begin asmlist al_indirectglobals

.section .rodata.n_RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D,"aw"
	.balign 8
.globl	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D$indirect
RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D$indirect:
	.quad	RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D
# End asmlist al_indirectglobals
# Begin asmlist al_dwarf_frame

.section .debug_frame
.Lc22:
	.long	.Lc24-.Lc23
.Lc23:
	.long	-1
	.byte	1
	.byte	0
	.uleb128	1
	.sleb128	-4
	.byte	16
	.byte	12
	.uleb128	7
	.uleb128	8
	.byte	5
	.uleb128	16
	.uleb128	2
	.balign 4,0
.Lc24:
	.long	.Lc26-.Lc25
.Lc25:
	.secrel32	.Lc22
	.quad	.Lc2
	.quad	.Lc1-.Lc2
	.byte	2
	.byte	.Lc3-.Lc2
	.byte	14
	.uleb128	16
	.byte	5
	.uleb128	6
	.uleb128	4
	.byte	2
	.byte	.Lc4-.Lc3
	.byte	13
	.uleb128	6
	.balign 4,0
.Lc26:
	.long	.Lc29-.Lc28
.Lc28:
	.secrel32	.Lc22
	.quad	.Lc6
	.quad	.Lc5-.Lc6
	.byte	2
	.byte	.Lc7-.Lc6
	.byte	14
	.uleb128	16
	.byte	5
	.uleb128	6
	.uleb128	4
	.byte	2
	.byte	.Lc8-.Lc7
	.byte	13
	.uleb128	6
	.byte	4
	.long	.Lc9-.Lc8
	.byte	14
	.uleb128	8
	.balign 4,0
.Lc29:
	.long	.Lc32-.Lc31
.Lc31:
	.secrel32	.Lc22
	.quad	.Lc11
	.quad	.Lc10-.Lc11
	.byte	7
	.uleb128	16
	.byte	2
	.byte	.Lc12-.Lc11
	.byte	14
	.uleb128	16
	.byte	5
	.uleb128	6
	.uleb128	4
	.byte	2
	.byte	.Lc13-.Lc12
	.byte	13
	.uleb128	6
	.balign 4,0
.Lc32:
	.long	.Lc35-.Lc34
.Lc34:
	.secrel32	.Lc22
	.quad	.Lc15
	.quad	.Lc14-.Lc15
	.byte	2
	.byte	.Lc16-.Lc15
	.byte	14
	.uleb128	16
	.byte	5
	.uleb128	6
	.uleb128	4
	.byte	2
	.byte	.Lc17-.Lc16
	.byte	13
	.uleb128	6
	.balign 4,0
.Lc35:
	.long	.Lc38-.Lc37
.Lc37:
	.secrel32	.Lc22
	.quad	.Lc19
	.quad	.Lc18-.Lc19
	.byte	2
	.byte	.Lc20-.Lc19
	.byte	14
	.uleb128	16
	.byte	5
	.uleb128	6
	.uleb128	4
	.byte	2
	.byte	.Lc21-.Lc20
	.byte	13
	.uleb128	6
	.balign 4,0
.Lc38:
# End asmlist al_dwarf_frame
# Begin asmlist al_dwarf_info

.section .debug_info
.Ldebug_info0:
	.long	.Ledebug_info0-.Lf2
.Lf2:
	.short	2
	.secrel32	.Ldebug_abbrev0
	.byte	8
	.uleb128	1
	.ascii	"../../error_test/tw38827.lpr\000"
	.ascii	"Free Pascal 3.3.1 2021/07/04\000"
	.ascii	"C:/Users/garet/Documents/programming/fpc/tests/\000"
	.byte	9
	.byte	3
	.secrel32	.Ldebug_line0
	.quad	DEBUGSTART_$P$TW38827
	.quad	DEBUGEND_$P$TW38827
# Syms - Begin Staticsymtable
# Symbol SYSTEM
# Symbol LNFODWRF
# Symbol FPINTRES
# Symbol OBJPAS
# Symbol TW38827_U
# Symbol TW38827
# Symbol main
# Symbol R
	.uleb128	2
	.ascii	"R\000"
	.byte	9
	.byte	3
	.quad	U_$P$TW38827_$$_R
	.long	.La1-.Ldebug_info0
# Symbol GETARR$1$CRC84DE8C0D$CRCB6AF655F
# Symbol TARRAY$1$CRC84DE8C0D
# Symbol P$TW38827_$$_init_implicit$
# Symbol P$TW38827_$$_finalize_implicit$
# Symbol fin$00000004
# Symbol SYSINIT
# Symbol rttidef$RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D
# Symbol rtti_dyn_array$
# Symbol rtti_dyn_array_inner$
# Syms - End Staticsymtable
# Procdef $main; Register;
	.uleb128	3
	.ascii	"main\000"
	.byte	1
	.byte	65
	.byte	1
	.quad	main
	.quad	.Lt1
	.byte	0
# Procdef GetArr$1$crc84DE8C0D$crcB6AF655F(<var TRec>;<var TArray$1$crc84DE8C0D>):{Dynamic} Array Of Single;
	.uleb128	4
	.ascii	"GETARR$1$CRC84DE8C0D$CRCB6AF655F\000"
	.byte	1
	.byte	65
	.byte	1
	.long	.La3-.Ldebug_info0
	.quad	P$TW38827_$$_GETARR$1$CRC84DE8C0D$CRCB6AF655F$$TARRAY$1$CRC84DE8C0D
	.quad	.Lt2
# Symbol this
	.uleb128	5
	.ascii	"this\000"
	.byte	3
	.byte	118
	.sleb128	-8
	.byte	6
	.byte	1
	.long	.La1-.Ldebug_info0
# Symbol result
	.uleb128	2
	.ascii	"result\000"
	.byte	3
	.byte	118
	.sleb128	-16
	.byte	6
	.long	.La3-.Ldebug_info0
# Symbol GETARR$1$CRC84DE8C0D$CRCB6AF655F
	.uleb128	2
	.ascii	"GETARR$1$CRC84DE8C0D$CRCB6AF655F\000"
	.byte	3
	.byte	118
	.sleb128	-16
	.byte	6
	.long	.La3-.Ldebug_info0
# Symbol RESULT
	.uleb128	2
	.ascii	"RESULT\000"
	.byte	3
	.byte	118
	.sleb128	-16
	.byte	6
	.long	.La3-.Ldebug_info0
	.byte	0
# Procdef $P$TW38827_$$_init_implicit$; Register;
	.uleb128	3
	.ascii	"P$TW38827_$$_init_implicit$\000"
	.byte	1
	.byte	65
	.byte	1
	.quad	P$TW38827_$$_init_implicit$
	.quad	.Lt3
	.byte	0
# Procdef $P$TW38827_$$_finalize_implicit$; Register;
	.uleb128	3
	.ascii	"P$TW38827_$$_finalize_implicit$\000"
	.byte	1
	.byte	65
	.byte	1
	.quad	P$TW38827_$$_finalize_implicit$
	.quad	.Lt4
	.byte	0
# Procdef $fin$00000004(<^untyped>); Register;
	.uleb128	6
	.ascii	"fin$00000004\000"
	.byte	1
	.byte	65
	.quad	P$TW38827_$$_fin$00000004
	.quad	.Lt5
# Symbol parentfp
	.uleb128	7
	.ascii	"parentfp\000"
	.byte	2
	.byte	144
	.uleb128	6
	.long	.La11-.Ldebug_info0
	.byte	0
# Defs - Begin unit SYSTEM has index 1
# Definition ^untyped
.La11:
	.uleb128	8
	.ascii	"parentfp_void_pointer\000"
	.long	.La13-.Ldebug_info0
.La13:
	.uleb128	9
.La12:
	.uleb128	10
	.long	.La11-.Ldebug_info0
# Defs - End unit SYSTEM has index 1
# Defs - Begin unit STRINGS has index 4
# Defs - End unit STRINGS has index 4
# Defs - Begin unit OBJPAS has index 6
# Defs - End unit OBJPAS has index 6
# Defs - Begin unit WINDOWS has index 5
# Defs - End unit WINDOWS has index 5
# Defs - Begin unit EXEINFO has index 3
# Defs - End unit EXEINFO has index 3
# Defs - Begin unit LNFODWRF has index 2
# Defs - End unit LNFODWRF has index 2
# Defs - Begin unit FPINTRES has index 7
# Defs - End unit FPINTRES has index 7
# Defs - Begin unit TW38827_U has index 8
# Definition TRec
.La1:
	.uleb128	8
	.ascii	"TREC\000"
	.long	.La14-.Ldebug_info0
.La14:
	.uleb128	11
	.ascii	"TREC\000"
	.uleb128	8
	.uleb128	12
	.ascii	"C\000"
	.byte	2
	.byte	35
	.uleb128	0
	.long	.La15-.Ldebug_info0
# Procdef GetArr$1(<var TRec>):{Dynamic} Array Of T;
	.uleb128	13
	.ascii	"GETARR$1\000"
	.byte	1
	.byte	65
	.byte	1
	.long	.La17-.Ldebug_info0
# Symbol this
	.uleb128	14
	.ascii	"this\000"
	.byte	1
	.long	.La1-.Ldebug_info0
	.byte	0
	.byte	0
.La2:
	.uleb128	10
	.long	.La1-.Ldebug_info0
# Definition TArray$1$crc84DE8C0D
.La15:
	.uleb128	8
	.ascii	"TARRAY$1$CRC84DE8C0D\000"
	.long	.La19-.Ldebug_info0
.La19:
	.uleb128	15
	.long	.La20-.Ldebug_info0
.La20:
	.uleb128	16
	.ascii	"TARRAY$1$CRC84DE8C0D\000"
	.uleb128	4
	.long	.La21-.Ldebug_info0
	.uleb128	17
	.sleb128	0
	.long	.La23-.Ldebug_info0
	.byte	0
.La16:
	.uleb128	10
	.long	.La15-.Ldebug_info0
# Defs - End unit TW38827_U has index 8
# Defs - Begin unit SYSINIT has index 9
# Defs - End unit SYSINIT has index 9
# Defs - Begin Staticsymtable
# Definition TArray$1$crc84DE8C0D
.La3:
	.uleb128	8
	.ascii	"TARRAY$1$CRC84DE8C0D\000"
	.long	.La25-.Ldebug_info0
.La25:
	.uleb128	15
	.long	.La26-.Ldebug_info0
.La26:
	.uleb128	16
	.ascii	"TARRAY$1$CRC84DE8C0D\000"
	.uleb128	4
	.long	.La21-.Ldebug_info0
	.uleb128	17
	.sleb128	0
	.long	.La23-.Ldebug_info0
	.byte	0
.La4:
	.uleb128	10
	.long	.La3-.Ldebug_info0
# Definition <record type>
.La5:
	.uleb128	8
	.ascii	"rttidef$RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D\000"
	.long	.La27-.Ldebug_info0
.La27:
	.uleb128	11
	.ascii	"$RTTIDEF$RTTI_$P$TW38827_$$_TARRAY$1$CRC84DE8C0D\000"
	.uleb128	66
	.byte	0
.La6:
	.uleb128	10
	.long	.La5-.Ldebug_info0
# Definition <record type>
.La7:
	.uleb128	8
	.ascii	"rtti_dyn_array$\000"
	.long	.La28-.Ldebug_info0
.La28:
	.uleb128	11
	.ascii	"$RTTI_DYN_ARRAY$\000"
	.uleb128	44
	.byte	0
.La8:
	.uleb128	10
	.long	.La7-.Ldebug_info0
# Definition <record type>
.La9:
	.uleb128	8
	.ascii	"rtti_dyn_array_inner$\000"
	.long	.La29-.Ldebug_info0
.La29:
	.uleb128	11
	.ascii	"$RTTI_DYN_ARRAY_INNER$\000"
	.uleb128	36
	.byte	0
.La10:
	.uleb128	10
	.long	.La9-.Ldebug_info0
# Defs - End Staticsymtable
# Definition Single
.La21:
	.uleb128	8
	.ascii	"SINGLE\000"
	.long	.La30-.Ldebug_info0
.La30:
	.uleb128	18
	.ascii	"SINGLE\000"
	.byte	4
	.byte	4
.La22:
	.uleb128	10
	.long	.La21-.Ldebug_info0
# Definition LongInt
.La23:
	.uleb128	8
	.ascii	"LONGINT\000"
	.long	.La31-.Ldebug_info0
.La31:
	.uleb128	18
	.ascii	"LONGINT\000"
	.byte	5
	.byte	4
.La24:
	.uleb128	10
	.long	.La23-.Ldebug_info0
	.byte	0
.Ledebug_info0:
# End asmlist al_dwarf_info
# Begin asmlist al_dwarf_abbrev

.section .debug_abbrev
# Abbrev 1
	.uleb128	1
	.uleb128	17
	.byte	1
	.uleb128	3
	.uleb128	8
	.uleb128	37
	.uleb128	8
	.uleb128	27
	.uleb128	8
	.uleb128	19
	.uleb128	11
	.uleb128	66
	.uleb128	11
	.uleb128	16
	.uleb128	6
	.uleb128	17
	.uleb128	1
	.uleb128	18
	.uleb128	1
	.byte	0
	.byte	0
# Abbrev 2
	.uleb128	2
	.uleb128	52
	.byte	0
	.uleb128	3
	.uleb128	8
	.uleb128	2
	.uleb128	10
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 3
	.uleb128	3
	.uleb128	46
	.byte	1
	.uleb128	3
	.uleb128	8
	.uleb128	39
	.uleb128	12
	.uleb128	54
	.uleb128	11
	.uleb128	63
	.uleb128	12
	.uleb128	17
	.uleb128	1
	.uleb128	18
	.uleb128	1
	.byte	0
	.byte	0
# Abbrev 4
	.uleb128	4
	.uleb128	46
	.byte	1
	.uleb128	3
	.uleb128	8
	.uleb128	39
	.uleb128	12
	.uleb128	54
	.uleb128	11
	.uleb128	63
	.uleb128	12
	.uleb128	73
	.uleb128	19
	.uleb128	17
	.uleb128	1
	.uleb128	18
	.uleb128	1
	.byte	0
	.byte	0
# Abbrev 5
	.uleb128	5
	.uleb128	5
	.byte	0
	.uleb128	3
	.uleb128	8
	.uleb128	2
	.uleb128	10
	.uleb128	52
	.uleb128	12
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 6
	.uleb128	6
	.uleb128	46
	.byte	1
	.uleb128	3
	.uleb128	8
	.uleb128	39
	.uleb128	12
	.uleb128	54
	.uleb128	11
	.uleb128	17
	.uleb128	1
	.uleb128	18
	.uleb128	1
	.byte	0
	.byte	0
# Abbrev 7
	.uleb128	7
	.uleb128	5
	.byte	0
	.uleb128	3
	.uleb128	8
	.uleb128	2
	.uleb128	10
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 8
	.uleb128	8
	.uleb128	22
	.byte	0
	.uleb128	3
	.uleb128	8
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 9
	.uleb128	9
	.uleb128	15
	.byte	0
	.byte	0
	.byte	0
# Abbrev 10
	.uleb128	10
	.uleb128	16
	.byte	0
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 11
	.uleb128	11
	.uleb128	19
	.byte	1
	.uleb128	3
	.uleb128	8
	.uleb128	11
	.uleb128	15
	.byte	0
	.byte	0
# Abbrev 12
	.uleb128	12
	.uleb128	13
	.byte	0
	.uleb128	3
	.uleb128	8
	.uleb128	56
	.uleb128	10
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 13
	.uleb128	13
	.uleb128	46
	.byte	1
	.uleb128	3
	.uleb128	8
	.uleb128	39
	.uleb128	12
	.uleb128	54
	.uleb128	11
	.uleb128	63
	.uleb128	12
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 14
	.uleb128	14
	.uleb128	5
	.byte	0
	.uleb128	3
	.uleb128	8
	.uleb128	52
	.uleb128	12
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 15
	.uleb128	15
	.uleb128	15
	.byte	0
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 16
	.uleb128	16
	.uleb128	1
	.byte	1
	.uleb128	3
	.uleb128	8
	.uleb128	81
	.uleb128	15
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 17
	.uleb128	17
	.uleb128	33
	.byte	0
	.uleb128	34
	.uleb128	13
	.uleb128	73
	.uleb128	19
	.byte	0
	.byte	0
# Abbrev 18
	.uleb128	18
	.uleb128	36
	.byte	0
	.uleb128	3
	.uleb128	8
	.uleb128	62
	.uleb128	11
	.uleb128	11
	.uleb128	11
	.byte	0
	.byte	0
	.byte	0
# End asmlist al_dwarf_abbrev
# Begin asmlist al_dwarf_line

.section .debug_line
# === header start ===
	.long	.Ledebug_line0-.Lf3
.Lf3:
	.short	2
	.long	.Lehdebug_line0-.Lf4
.Lf4:
	.byte	1
	.byte	1
	.byte	1
	.byte	255
	.byte	13
	.byte	0
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	0
	.byte	0
	.byte	0
	.byte	1
	.byte	0
	.byte	0
	.byte	1
# include_directories
	.ascii	"../../error_test\000"
	.byte	0
# file_names
	.ascii	"tw38827.lpr\000"
	.uleb128	1
	.uleb128	0
	.uleb128	0
	.ascii	"tw38827_u.pas\000"
	.uleb128	1
	.uleb128	0
	.uleb128	0
	.byte	0
.Lehdebug_line0:
# === header end ===
# function: P$TW38827_$$_GETARR$1$CRC84DE8C0D$CRCB6AF655F$$TARRAY$1$CRC84DE8C0D
# path: C:\Users\garet\Documents\programming\error_test\
# file: tw38827_u.pas
	.byte	4
	.uleb128	2
# [12:1]
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll1
	.byte	5
	.uleb128	1
	.byte	23
# [13:3]
	.byte	2
	.uleb128	.Ll2-.Ll1
	.byte	5
	.uleb128	3
	.byte	13
# [16:7]
	.byte	2
	.uleb128	.Ll3-.Ll2
	.byte	5
	.uleb128	7
	.byte	15
# [18:1]
	.byte	2
	.uleb128	.Ll4-.Ll3
	.byte	5
	.uleb128	1
	.byte	14
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll5
	.byte	0
	.byte	1
	.byte	1
# ###################
# function: P$TW38827_$$_fin$00000004
# [9:1]
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll6
	.byte	5
	.uleb128	1
	.byte	20
# [9:1]
	.byte	2
	.uleb128	.Ll7-.Ll6
	.byte	1
# [7:1]
	.byte	2
	.uleb128	.Ll8-.Ll7
	.byte	3
	.sleb128	-2
	.byte	1
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll9
	.byte	0
	.byte	1
	.byte	1
# ###################
# function: main
# function: PASCALMAIN
# [7:1]
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll10
	.byte	5
	.uleb128	1
	.byte	18
# [7:1]
	.byte	2
	.uleb128	.Ll11-.Ll10
	.byte	1
# [8:3]
	.byte	2
	.uleb128	.Ll12-.Ll11
	.byte	5
	.uleb128	3
	.byte	13
# [7:1]
	.byte	2
	.uleb128	.Ll13-.Ll12
	.byte	5
	.uleb128	1
	.byte	3
	.sleb128	-1
	.byte	1
# [9:1]
	.byte	2
	.uleb128	.Ll14-.Ll13
	.byte	14
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll15
	.byte	0
	.byte	1
	.byte	1
# ###################
# function: P$TW38827_$$_init_implicit$
# function: INIT$_$P$TW38827
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll16
	.byte	0
	.byte	1
	.byte	1
# ###################
# function: P$TW38827_$$_finalize_implicit$
# function: FINALIZE$_$P$TW38827
# function: PASCALFINALIZE
	.byte	0
	.uleb128	9
	.byte	2
	.quad	.Ll17
	.byte	0
	.byte	1
	.byte	1
# ###################
.Ledebug_line0:
# End asmlist al_dwarf_line
# Begin asmlist al_dwarf_aranges

.section .debug_aranges
	.long	.Learanges0-.Lf1
.Lf1:
	.short	2
	.secrel32	.Ldebug_info0
	.byte	8
	.byte	0
	.long	0
	.quad	main
	.quad	.Lt1-main
	.quad	P$TW38827_$$_GETARR$1$CRC84DE8C0D$CRCB6AF655F$$TARRAY$1$CRC84DE8C0D
	.quad	.Lt2-P$TW38827_$$_GETARR$1$CRC84DE8C0D$CRCB6AF655F$$TARRAY$1$CRC84DE8C0D
	.quad	P$TW38827_$$_init_implicit$
	.quad	.Lt3-P$TW38827_$$_init_implicit$
	.quad	P$TW38827_$$_finalize_implicit$
	.quad	.Lt4-P$TW38827_$$_finalize_implicit$
	.quad	P$TW38827_$$_fin$00000004
	.quad	.Lt5-P$TW38827_$$_fin$00000004
	.quad	0
	.quad	0
.Learanges0:
# End asmlist al_dwarf_aranges
# Begin asmlist al_dwarf_ranges

.section .debug_ranges
# End asmlist al_dwarf_ranges
# Begin asmlist al_end

.section .text.z_DEBUGEND_$P$TW38827,"ax"
.globl	DEBUGEND_$P$TW38827
DEBUGEND_$P$TW38827:
# End asmlist al_end



More information about the fpc-devel mailing list