gdb/gdb-vla-intel-branch-fix-stride-2of2.patch

930 lines
24 KiB
Diff

http://sourceware.org/ml/gdb-patches/2016-08/msg00274.html
Subject: Re: [V4 00/21] Fortran dynamic array support
--VbJkn9YxBvnuCH5J
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Tue, 23 Aug 2016 15:34:09 +0200, Bernhard Heckel wrote:
> created a branch with all stride patches.
users/bheckel/fortran-strides
2c392d41a3f2e38deeb9db5b7a93ca45682bbe3b
> I don't see regression on RH7.1, gcc 4.8.3-9
I see a regression for 32-bit targets (x86_64-m32 or native i686)
on Fedora 24 (gcc-gfortran-6.1.1-3.fc24.x86_64). I do not see the regression
on CentOS-7.2 (x86_64-m32).
print pvla^M
value requires 4294967288 bytes, which is more than max-value-size^M
(gdb) FAIL: gdb.fortran/vla-stride.exp: print single-element
I have attached a fix.
It is because:
<115> DW_AT_lower_bound : 4 byte block: 97 23 10 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 16; DW_OP_deref)
<11a> DW_AT_upper_bound : 4 byte block: 97 23 14 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 20; DW_OP_deref)
<11f> DW_AT_byte_stride : 6 byte block: 97 23 c 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 12; DW_OP_deref; DW_OP_lit4; DW_OP_mul)
DW_AT_lower_bound == 1
DW_AT_upper_bound == 1
DW_AT_byte_stride == (-2) * 4 == -8
I am not sure if gfortran is really wrong or not but a stride does not make
sense for me for a single row array.
Attaching also gdb.fortran/vla-stride.f90 from your branch built with
gcc-gfortran-6.1.1-3.fc24.x86_64 on Fedora 24 x86_64 in -m32 mode.
Besides that I see on all archs
-FAIL: gdb.pascal/arrays.exp: Print dynamic array of string
+FAIL: gdb.pascal/arrays.exp: Print dynamic array of string (GDB internal error)
but that testcase is only in Fedora and the Pascal (fpc) support has been not
well maintained so far so I am OK with that.
Thanks,
Jan
--VbJkn9YxBvnuCH5J
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename=1
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 88801ac..1fbf69a 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -1103,10 +1103,12 @@ create_array_type_with_stride (struct type *result_type,
if (high_bound < low_bound)
TYPE_LENGTH (result_type) = 0;
else if (byte_stride > 0)
- TYPE_LENGTH (result_type) = byte_stride * (high_bound - low_bound + 1);
+ TYPE_LENGTH (result_type) = (byte_stride * (high_bound - low_bound)
+ + TYPE_LENGTH (element_type));
else if (bit_stride > 0)
TYPE_LENGTH (result_type) =
- (bit_stride * (high_bound - low_bound + 1) + 7) / 8;
+ ((bit_stride * (high_bound - low_bound) + 7) / 8
+ + TYPE_LENGTH (element_type));
else
TYPE_LENGTH (result_type) =
TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
--VbJkn9YxBvnuCH5J
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="vla-stride.s"
.file "vla-stride.f90"
.text
.Ltext0:
.section .rodata
.align 4
.LC0:
.string "Integer overflow when calculating the amount of memory to allocate"
.LC1:
.string "vla"
.align 4
.LC2:
.string "Attempting to allocate already allocated variable '%s'"
.align 4
.LC3:
.string "At line 20 of file gdb.fortran/vla-stride.f90"
.align 4
.LC4:
.string "Allocation would exceed memory limit"
.text
.type MAIN__, @function
MAIN__:
.LFB0:
.file 1 "gdb.fortran/vla-stride.f90"
# gdb.fortran/vla-stride.f90:16
.loc 1 16 0
.cfi_startproc
# BLOCK 2 seq:0
# PRED: ENTRY (FALLTHRU)
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
pushl %edi
pushl %esi
pushl %ebx
subl $60, %esp
.cfi_offset 7, -12
.cfi_offset 6, -16
.cfi_offset 3, -20
# gdb.fortran/vla-stride.f90:17
.loc 1 17 0
movl $0, -72(%ebp)
.LBB2:
# gdb.fortran/vla-stride.f90:20
.loc 1 20 0
movl $0, %eax
testl %eax, %eax
# SUCC: 3 (FALLTHRU) 4
je .L2
# BLOCK 3 seq:1
# PRED: 2 (FALLTHRU)
# gdb.fortran/vla-stride.f90:20
.loc 1 20 0 is_stmt 0 discriminator 1
subl $12, %esp
pushl $.LC0
# SUCC:
call _gfortran_runtime_error
# BLOCK 4 seq:2
# PRED: 2
.L2:
# gdb.fortran/vla-stride.f90:20
.loc 1 20 0 discriminator 2
movl -72(%ebp), %eax
testl %eax, %eax
# SUCC: 5 (FALLTHRU) 6
je .L3
# BLOCK 5 seq:3
# PRED: 4 (FALLTHRU)
# gdb.fortran/vla-stride.f90:20
.loc 1 20 0 discriminator 3
subl $4, %esp
pushl $.LC1
pushl $.LC2
pushl $.LC3
# SUCC:
call _gfortran_runtime_error_at
# BLOCK 6 seq:4
# PRED: 4
.L3:
# gdb.fortran/vla-stride.f90:20
.loc 1 20 0 discriminator 4
subl $12, %esp
pushl $40
call malloc
addl $16, %esp
movl %eax, -72(%ebp)
movl -72(%ebp), %eax
testl %eax, %eax
# SUCC: 7 (FALLTHRU) 8
jne .L4
# BLOCK 7 seq:5
# PRED: 6 (FALLTHRU)
# gdb.fortran/vla-stride.f90:20
.loc 1 20 0 discriminator 5
subl $12, %esp
pushl $.LC4
# SUCC:
call _gfortran_os_error
# BLOCK 8 seq:6
# PRED: 6
.L4:
# gdb.fortran/vla-stride.f90:20
.loc 1 20 0 discriminator 6
movl $265, -64(%ebp)
movl $1, -56(%ebp)
movl $10, -52(%ebp)
movl $1, -60(%ebp)
movl $-1, -68(%ebp)
.LBB3:
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 is_stmt 1 discriminator 6
movl -72(%ebp), %edx
movl -68(%ebp), %esi
movl -56(%ebp), %ebx
.LBB4:
.LBB5:
movl -72(%ebp), %eax
testl %eax, %eax
sete %al
movzbl %al, %eax
testl %eax, %eax
# SUCC: 10 9 (FALLTHRU)
jne .L5
# BLOCK 9 seq:7
# PRED: 8 (FALLTHRU)
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 is_stmt 0 discriminator 2
movl -56(%ebp), %ecx
leal 9(%ecx), %edi
movl -52(%ebp), %ecx
cmpl %ecx, %edi
# SUCC: 10 (FALLTHRU) 18
je .L6
# BLOCK 10 seq:8
# PRED: 8 9 (FALLTHRU)
.L5:
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 3
testl %eax, %eax
# SUCC: 11 (FALLTHRU) 12
je .L7
# BLOCK 11 seq:9
# PRED: 10 (FALLTHRU)
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 4
movl $0, %eax
# SUCC: 13 [100.0%]
jmp .L8
# BLOCK 12 seq:10
# PRED: 10
.L7:
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 5
movl -52(%ebp), %edx
movl -56(%ebp), %eax
subl %eax, %edx
movl %edx, %eax
addl $1, %eax
movl $0, %edx
testl %eax, %eax
# SUCC: 13 (FALLTHRU)
cmovs %edx, %eax
# BLOCK 13 seq:11
# PRED: 12 (FALLTHRU) 11 [100.0%]
.L8:
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 7
cmpl $10, %eax
setne %al
movzbl %al, %eax
movl $1, -56(%ebp)
movl $10, -52(%ebp)
movl $1, -60(%ebp)
movl -56(%ebp), %edx
negl %edx
movl %edx, -68(%ebp)
movl -68(%ebp), %esi
movl -56(%ebp), %ebx
movl -72(%ebp), %edx
testl %edx, %edx
# SUCC: 14 (FALLTHRU) 15
jne .L9
# BLOCK 14 seq:12
# PRED: 13 (FALLTHRU)
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 8
subl $12, %esp
pushl $40
call malloc
addl $16, %esp
movl %eax, -72(%ebp)
movl $265, -64(%ebp)
# SUCC: 17 [100.0%]
jmp .L10
# BLOCK 15 seq:13
# PRED: 13
.L9:
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 9
testl %eax, %eax
# SUCC: 16 (FALLTHRU) 17
je .L10
# BLOCK 16 seq:14
# PRED: 15 (FALLTHRU)
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 11
movl -72(%ebp), %eax
subl $8, %esp
pushl $40
pushl %eax
call realloc
addl $16, %esp
# SUCC: 17 (FALLTHRU)
movl %eax, -72(%ebp)
# BLOCK 17 seq:15
# PRED: 16 (FALLTHRU) 15 14 [100.0%]
.L10:
# SUCC: 18 (FALLTHRU)
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 13
movl -72(%ebp), %edx
# BLOCK 18 seq:16
# PRED: 9 17 (FALLTHRU)
.L6:
.LBE5:
# SUCC: 19 (FALLTHRU)
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 14
movl $0, %eax
# BLOCK 19 seq:17
# PRED: 18 (FALLTHRU) 20 [100.0%]
.L12:
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 17
cmpl $9, %eax
# SUCC: 21 20 (FALLTHRU)
jg .L11
# BLOCK 20 seq:18
# PRED: 19 (FALLTHRU)
# gdb.fortran/vla-stride.f90:21
.loc 1 21 0 discriminator 16
leal (%eax,%ebx), %ecx
leal (%ecx,%esi), %edi
movl A.1.3368(,%eax,4), %ecx
movl %ecx, (%edx,%edi,4)
addl $1, %eax
# SUCC: 19 [100.0%]
jmp .L12
# BLOCK 21 seq:19
# PRED: 19
.L11:
.LBE4:
.LBE3:
# gdb.fortran/vla-stride.f90:23
.loc 1 23 0 is_stmt 1
movl $265, -40(%ebp)
movl $1, -32(%ebp)
movl $10, -28(%ebp)
movl $-1, -36(%ebp)
movl -72(%ebp), %eax
movl -56(%ebp), %edx
movl $10, %ecx
subl %edx, %ecx
movl %ecx, %edx
sall $2, %edx
addl %edx, %eax
movl %eax, -48(%ebp)
movl $1, -44(%ebp)
.LBB6:
# gdb.fortran/vla-stride.f90:24
.loc 1 24 0
movl $265, -40(%ebp)
movl -36(%ebp), %eax
movl $1, -32(%ebp)
movl $10, -28(%ebp)
movl %eax, %edx
negl %edx
movl %edx, -36(%ebp)
movl -48(%ebp), %edx
movl -32(%ebp), %ecx
movl $10, %ebx
subl %ecx, %ebx
movl %ebx, %ecx
imull %eax, %ecx
sall $2, %ecx
addl %ecx, %edx
movl %edx, -48(%ebp)
movl %eax, -44(%ebp)
.LBE6:
# gdb.fortran/vla-stride.f90:25
.loc 1 25 0
movl $265, -40(%ebp)
movl $1, -32(%ebp)
movl $5, -28(%ebp)
movl $2, -36(%ebp)
movl -72(%ebp), %eax
movl -56(%ebp), %edx
movl $1, %ecx
subl %edx, %ecx
movl %ecx, %edx
sall $2, %edx
addl %edx, %eax
movl %eax, -48(%ebp)
movl $-2, -44(%ebp)
# gdb.fortran/vla-stride.f90:26
.loc 1 26 0
movl $265, -40(%ebp)
movl $1, -32(%ebp)
movl $1, -28(%ebp)
movl $-2, -36(%ebp)
movl -72(%ebp), %eax
movl -56(%ebp), %edx
movl $5, %ecx
subl %edx, %ecx
movl %ecx, %edx
sall $2, %edx
addl %edx, %eax
movl %eax, -48(%ebp)
movl $2, -44(%ebp)
# gdb.fortran/vla-stride.f90:28
.loc 1 28 0
movl $0, -48(%ebp)
.LBE2:
# gdb.fortran/vla-stride.f90:29
.loc 1 29 0
nop
leal -12(%ebp), %esp
popl %ebx
.cfi_restore 3
popl %esi
.cfi_restore 6
popl %edi
.cfi_restore 7
popl %ebp
.cfi_restore 5
.cfi_def_cfa 4, 4
# SUCC: EXIT [100.0%]
ret
.cfi_endproc
.LFE0:
.size MAIN__, .-MAIN__
.globl main
.type main, @function
main:
.LFB1:
# gdb.fortran/vla-stride.f90:29
.loc 1 29 0
.cfi_startproc
# BLOCK 2 seq:0
# PRED: ENTRY (FALLTHRU)
leal 4(%esp), %ecx
.cfi_def_cfa 1, 0
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
.cfi_escape 0x10,0x5,0x2,0x75,0
movl %esp, %ebp
pushl %ecx
.cfi_escape 0xf,0x3,0x75,0x7c,0x6
subl $4, %esp
movl %ecx, %eax
# gdb.fortran/vla-stride.f90:29
.loc 1 29 0
subl $8, %esp
pushl 4(%eax)
pushl (%eax)
call _gfortran_set_args
addl $16, %esp
subl $8, %esp
pushl $options.3.3382
pushl $9
call _gfortran_set_options
addl $16, %esp
call MAIN__
movl $0, %eax
movl -4(%ebp), %ecx
.cfi_def_cfa 1, 0
leave
.cfi_restore 5
leal -4(%ecx), %esp
.cfi_def_cfa 4, 4
# SUCC: EXIT [100.0%]
ret
.cfi_endproc
.LFE1:
.size main, .-main
.section .rodata
.align 32
.type A.1.3368, @object
.size A.1.3368, 40
A.1.3368:
.long 1
.long 2
.long 3
.long 4
.long 5
.long 6
.long 7
.long 8
.long 9
.long 10
.align 32
.type options.3.3382, @object
.size options.3.3382, 36
options.3.3382:
.long 68
.long 1023
.long 0
.long 0
.long 1
.long 1
.long 0
.long 0
.long 31
.text
.Letext0:
.section .debug_info,"",@progbits
.Ldebug_info0:
.long 0x128 # Length of Compilation Unit Info
.value 0x4 # DWARF version number
.long .Ldebug_abbrev0 # Offset Into Abbrev. Section
.byte 0x4 # Pointer Size (in bytes)
.uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit)
.long .LASF5 # DW_AT_producer: "GNU Fortran2008 6.1.1 20160621 (Red Hat 6.1.1-3) -m32 -mtune=generic -march=i686 -g -fintrinsic-modules-path /usr/lib/gcc/x86_64-redhat-linux/6.1.1/32/finclude"
.byte 0xe # DW_AT_language
.byte 0x2 # DW_AT_identifier_case
.long .LASF6 # DW_AT_name: "gdb.fortran/vla-stride.f90"
.long .LASF7 # DW_AT_comp_dir: "/home/jkratoch/redhat/gdb-clean/gdb/testsuite"
.long .Ltext0 # DW_AT_low_pc
.long .Letext0-.Ltext0 # DW_AT_high_pc
.long .Ldebug_line0 # DW_AT_stmt_list
.uleb128 0x2 # (DIE (0x26) DW_TAG_base_type)
.byte 0x4 # DW_AT_byte_size
.byte 0x5 # DW_AT_encoding
.long .LASF2 # DW_AT_name: "integer(kind=4)"
.uleb128 0x3 # (DIE (0x2d) DW_TAG_const_type)
.long 0x26 # DW_AT_type
.uleb128 0x4 # (DIE (0x32) DW_TAG_subprogram)
# DW_AT_external
.long .LASF8 # DW_AT_name: "main"
.byte 0x1 # DW_AT_decl_file (gdb.fortran/vla-stride.f90)
.byte 0x1d # DW_AT_decl_line
.long 0x26 # DW_AT_type
.long .LFB1 # DW_AT_low_pc
.long .LFE1-.LFB1 # DW_AT_high_pc
.uleb128 0x1 # DW_AT_frame_base
.byte 0x9c # DW_OP_call_frame_cfa
# DW_AT_GNU_all_tail_call_sites
.long 0x69 # DW_AT_sibling
.uleb128 0x5 # (DIE (0x4b) DW_TAG_formal_parameter)
.long .LASF0 # DW_AT_name: "argc"
.byte 0x1 # DW_AT_decl_file (gdb.fortran/vla-stride.f90)
.byte 0x1d # DW_AT_decl_line
.long 0x2d # DW_AT_type
.uleb128 0x2 # DW_AT_location
.byte 0x91 # DW_OP_fbreg
.sleb128 0
.uleb128 0x5 # (DIE (0x59) DW_TAG_formal_parameter)
.long .LASF1 # DW_AT_name: "argv"
.byte 0x1 # DW_AT_decl_file (gdb.fortran/vla-stride.f90)
.byte 0x1d # DW_AT_decl_line
.long 0x69 # DW_AT_type
.uleb128 0x3 # DW_AT_location
.byte 0x91 # DW_OP_fbreg
.sleb128 4
.byte 0x6 # DW_OP_deref
.byte 0 # end of children of DIE 0x32
.uleb128 0x6 # (DIE (0x69) DW_TAG_pointer_type)
.byte 0x4 # DW_AT_byte_size
.long 0x6f # DW_AT_type
.uleb128 0x2 # (DIE (0x6f) DW_TAG_base_type)
.byte 0x1 # DW_AT_byte_size
.byte 0x8 # DW_AT_encoding
.long .LASF3 # DW_AT_name: "character(kind=1)"
.uleb128 0x7 # (DIE (0x76) DW_TAG_subprogram)
.long .LASF9 # DW_AT_name: "vla_stride"
.byte 0x1 # DW_AT_decl_file (gdb.fortran/vla-stride.f90)
.byte 0x10 # DW_AT_decl_line
# DW_AT_main_subprogram
.byte 0x2 # DW_AT_calling_convention
.long .LFB0 # DW_AT_low_pc
.long .LFE0-.LFB0 # DW_AT_high_pc
.uleb128 0x1 # DW_AT_frame_base
.byte 0x9c # DW_OP_call_frame_cfa
# DW_AT_GNU_all_tail_call_sites
.long 0xe7 # DW_AT_sibling
.uleb128 0x8 # (DIE (0x8c) DW_TAG_variable)
.ascii "i\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.fortran/vla-stride.f90)
.byte 0x15 # DW_AT_decl_line
.long 0x26 # DW_AT_type
.uleb128 0x9 # (DIE (0x95) DW_TAG_variable)
.long .LASF4 # DW_AT_name: "pvla"
.byte 0x1 # DW_AT_decl_file (gdb.fortran/vla-stride.f90)
.byte 0x12 # DW_AT_decl_line
.long 0xe7 # DW_AT_type
.uleb128 0x2 # DW_AT_location
.byte 0x91 # DW_OP_fbreg
.sleb128 -56
.uleb128 0xa # (DIE (0xa3) DW_TAG_variable)
.ascii "vla\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.fortran/vla-stride.f90)
.byte 0x11 # DW_AT_decl_line
.long 0x10b # DW_AT_type
.uleb128 0x3 # DW_AT_location
.byte 0x91 # DW_OP_fbreg
.sleb128 -80
.uleb128 0xb # (DIE (0xb2) DW_TAG_lexical_block)
.long .LBB2 # DW_AT_low_pc
.long .LBE2-.LBB2 # DW_AT_high_pc
.uleb128 0xc # (DIE (0xbb) DW_TAG_lexical_block)
.long .LBB3 # DW_AT_low_pc
.long .LBE3-.LBB3 # DW_AT_high_pc
.long 0xdc # DW_AT_sibling
.uleb128 0xb # (DIE (0xc8) DW_TAG_lexical_block)
.long .LBB4 # DW_AT_low_pc
.long .LBE4-.LBB4 # DW_AT_high_pc
.uleb128 0xd # (DIE (0xd1) DW_TAG_lexical_block)
.long .LBB5 # DW_AT_low_pc
.long .LBE5-.LBB5 # DW_AT_high_pc
.byte 0 # end of children of DIE 0xc8
.byte 0 # end of children of DIE 0xbb
.uleb128 0xd # (DIE (0xdc) DW_TAG_lexical_block)
.long .LBB6 # DW_AT_low_pc
.long .LBE6-.LBB6 # DW_AT_high_pc
.byte 0 # end of children of DIE 0xb2
.byte 0 # end of children of DIE 0x76
.uleb128 0xe # (DIE (0xe7) DW_TAG_array_type)
.uleb128 0x2 # DW_AT_data_location
.byte 0x97 # DW_OP_push_object_address
.byte 0x6 # DW_OP_deref
.uleb128 0x4 # DW_AT_associated
.byte 0x97 # DW_OP_push_object_address
.byte 0x6 # DW_OP_deref
.byte 0x30 # DW_OP_lit0
.byte 0x2e # DW_OP_ne
.long 0x26 # DW_AT_type
.long 0x10b # DW_AT_sibling
.uleb128 0xf # (DIE (0xf8) DW_TAG_subrange_type)
.uleb128 0x4 # DW_AT_lower_bound
.byte 0x97 # DW_OP_push_object_address
.byte 0x23 # DW_OP_plus_uconst
.uleb128 0x10
.byte 0x6 # DW_OP_deref
.uleb128 0x4 # DW_AT_upper_bound
.byte 0x97 # DW_OP_push_object_address
.byte 0x23 # DW_OP_plus_uconst
.uleb128 0x14
.byte 0x6 # DW_OP_deref
.uleb128 0x6 # DW_AT_byte_stride
.byte 0x97 # DW_OP_push_object_address
.byte 0x23 # DW_OP_plus_uconst
.uleb128 0xc
.byte 0x6 # DW_OP_deref
.byte 0x34 # DW_OP_lit4
.byte 0x1e # DW_OP_mul
.byte 0 # end of children of DIE 0xe7
.uleb128 0x10 # (DIE (0x10b) DW_TAG_array_type)
.uleb128 0x2 # DW_AT_data_location
.byte 0x97 # DW_OP_push_object_address
.byte 0x6 # DW_OP_deref
.uleb128 0x4 # DW_AT_allocated
.byte 0x97 # DW_OP_push_object_address
.byte 0x6 # DW_OP_deref
.byte 0x30 # DW_OP_lit0
.byte 0x2e # DW_OP_ne
.long 0x26 # DW_AT_type
.uleb128 0xf # (DIE (0x118) DW_TAG_subrange_type)
.uleb128 0x4 # DW_AT_lower_bound
.byte 0x97 # DW_OP_push_object_address
.byte 0x23 # DW_OP_plus_uconst
.uleb128 0x10
.byte 0x6 # DW_OP_deref
.uleb128 0x4 # DW_AT_upper_bound
.byte 0x97 # DW_OP_push_object_address
.byte 0x23 # DW_OP_plus_uconst
.uleb128 0x14
.byte 0x6 # DW_OP_deref
.uleb128 0x6 # DW_AT_byte_stride
.byte 0x97 # DW_OP_push_object_address
.byte 0x23 # DW_OP_plus_uconst
.uleb128 0xc
.byte 0x6 # DW_OP_deref
.byte 0x34 # DW_OP_lit4
.byte 0x1e # DW_OP_mul
.byte 0 # end of children of DIE 0x10b
.byte 0 # end of children of DIE 0xb
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1 # (abbrev code)
.uleb128 0x11 # (TAG: DW_TAG_compile_unit)
.byte 0x1 # DW_children_yes
.uleb128 0x25 # (DW_AT_producer)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x13 # (DW_AT_language)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x42 # (DW_AT_identifier_case)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3 # (DW_AT_name)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x1b # (DW_AT_comp_dir)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x6 # (DW_FORM_data4)
.uleb128 0x10 # (DW_AT_stmt_list)
.uleb128 0x17 # (DW_FORM_sec_offset)
.byte 0
.byte 0
.uleb128 0x2 # (abbrev code)
.uleb128 0x24 # (TAG: DW_TAG_base_type)
.byte 0 # DW_children_no
.uleb128 0xb # (DW_AT_byte_size)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3e # (DW_AT_encoding)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3 # (DW_AT_name)
.uleb128 0xe # (DW_FORM_strp)
.byte 0
.byte 0
.uleb128 0x3 # (abbrev code)
.uleb128 0x26 # (TAG: DW_TAG_const_type)
.byte 0 # DW_children_no
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x4 # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0x1 # DW_children_yes
.uleb128 0x3f # (DW_AT_external)
.uleb128 0x19 # (DW_FORM_flag_present)
.uleb128 0x3 # (DW_AT_name)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x3a # (DW_AT_decl_file)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3b # (DW_AT_decl_line)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x6 # (DW_FORM_data4)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x2116 # (DW_AT_GNU_all_tail_call_sites)
.uleb128 0x19 # (DW_FORM_flag_present)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x5 # (abbrev code)
.uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
.byte 0 # DW_children_no
.uleb128 0x3 # (DW_AT_name)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x3a # (DW_AT_decl_file)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3b # (DW_AT_decl_line)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x2 # (DW_AT_location)
.uleb128 0x18 # (DW_FORM_exprloc)
.byte 0
.byte 0
.uleb128 0x6 # (abbrev code)
.uleb128 0xf # (TAG: DW_TAG_pointer_type)
.byte 0 # DW_children_no
.uleb128 0xb # (DW_AT_byte_size)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x7 # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0x1 # DW_children_yes
.uleb128 0x3 # (DW_AT_name)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x3a # (DW_AT_decl_file)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3b # (DW_AT_decl_line)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x6a # (DW_AT_main_subprogram)
.uleb128 0x19 # (DW_FORM_flag_present)
.uleb128 0x36 # (DW_AT_calling_convention)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x6 # (DW_FORM_data4)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x2116 # (DW_AT_GNU_all_tail_call_sites)
.uleb128 0x19 # (DW_FORM_flag_present)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x8 # (abbrev code)
.uleb128 0x34 # (TAG: DW_TAG_variable)
.byte 0 # DW_children_no
.uleb128 0x3 # (DW_AT_name)
.uleb128 0x8 # (DW_FORM_string)
.uleb128 0x3a # (DW_AT_decl_file)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3b # (DW_AT_decl_line)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x9 # (abbrev code)
.uleb128 0x34 # (TAG: DW_TAG_variable)
.byte 0 # DW_children_no
.uleb128 0x3 # (DW_AT_name)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x3a # (DW_AT_decl_file)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3b # (DW_AT_decl_line)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x2 # (DW_AT_location)
.uleb128 0x18 # (DW_FORM_exprloc)
.byte 0
.byte 0
.uleb128 0xa # (abbrev code)
.uleb128 0x34 # (TAG: DW_TAG_variable)
.byte 0 # DW_children_no
.uleb128 0x3 # (DW_AT_name)
.uleb128 0x8 # (DW_FORM_string)
.uleb128 0x3a # (DW_AT_decl_file)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3b # (DW_AT_decl_line)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x2 # (DW_AT_location)
.uleb128 0x18 # (DW_FORM_exprloc)
.byte 0
.byte 0
.uleb128 0xb # (abbrev code)
.uleb128 0xb # (TAG: DW_TAG_lexical_block)
.byte 0x1 # DW_children_yes
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x6 # (DW_FORM_data4)
.byte 0
.byte 0
.uleb128 0xc # (abbrev code)
.uleb128 0xb # (TAG: DW_TAG_lexical_block)
.byte 0x1 # DW_children_yes
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x6 # (DW_FORM_data4)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0xd # (abbrev code)
.uleb128 0xb # (TAG: DW_TAG_lexical_block)
.byte 0 # DW_children_no
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x6 # (DW_FORM_data4)
.byte 0
.byte 0
.uleb128 0xe # (abbrev code)
.uleb128 0x1 # (TAG: DW_TAG_array_type)
.byte 0x1 # DW_children_yes
.uleb128 0x50 # (DW_AT_data_location)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x4f # (DW_AT_associated)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0xf # (abbrev code)
.uleb128 0x21 # (TAG: DW_TAG_subrange_type)
.byte 0 # DW_children_no
.uleb128 0x22 # (DW_AT_lower_bound)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x2f # (DW_AT_upper_bound)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x51 # (DW_AT_byte_stride)
.uleb128 0x18 # (DW_FORM_exprloc)
.byte 0
.byte 0
.uleb128 0x10 # (abbrev code)
.uleb128 0x1 # (TAG: DW_TAG_array_type)
.byte 0x1 # DW_children_yes
.uleb128 0x50 # (DW_AT_data_location)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x4e # (DW_AT_allocated)
.uleb128 0x18 # (DW_FORM_exprloc)
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.byte 0
.section .debug_aranges,"",@progbits
.long 0x1c # Length of Address Ranges Info
.value 0x2 # DWARF Version
.long .Ldebug_info0 # Offset of Compilation Unit Info
.byte 0x4 # Size of Address
.byte 0 # Size of Segment Descriptor
.value 0 # Pad to 8 byte boundary
.value 0
.long .Ltext0 # Address
.long .Letext0-.Ltext0 # Length
.long 0
.long 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF7:
.string "/home/jkratoch/redhat/gdb-clean/gdb/testsuite"
.LASF3:
.string "character(kind=1)"
.LASF0:
.string "argc"
.LASF9:
.string "vla_stride"
.LASF2:
.string "integer(kind=4)"
.LASF5:
.string "GNU Fortran2008 6.1.1 20160621 (Red Hat 6.1.1-3) -m32 -mtune=generic -march=i686 -g -fintrinsic-modules-path /usr/lib/gcc/x86_64-redhat-linux/6.1.1/32/finclude"
.LASF8:
.string "main"
.LASF4:
.string "pvla"
.LASF6:
.string "gdb.fortran/vla-stride.f90"
.LASF1:
.string "argv"
.ident "GCC: (GNU) 6.1.1 20160621 (Red Hat 6.1.1-3)"
.section .note.GNU-stack,"",@progbits
--VbJkn9YxBvnuCH5J--