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
        .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,@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

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to