From: Josef Zlomek <zlomj9am@artax.karlin.mff.cuni.cz>
To: gdb@sources.redhat.com
Subject: Problem with location lists and variables on stack
Date: Wed, 01 Oct 2003 14:43:00 -0000 [thread overview]
Message-ID: <20031001144330.GA11707@artax.karlin.mff.cuni.cz> (raw)
[-- Attachment #1: Type: text/plain, Size: 2600 bytes --]
Hello,
I writing a better pass (variable tracking) for GCC which finally emits
location lists for variables. (If you are insterested it is at
http://artax.karlin.mff.cuni.cz/~zlomj9am/download/vt-main.patch
It still contains many debugging checks and (disabled) prints.)
Let the local variables and (some) arguments be addressed using stack pointer,
for example x86-64 architecture with variables addressed using %rsp.
The address emitted for variables located on stack by my new patch is always
DW_OP_fbreg + constant.
When I was testing the emitted debug info with mainline GDB I found that
GDB probably does not adjust addresses of variables when stack pointer changes
(like because of "pushq" instruction) if using location lists.
I think GDB should adjust the address of %rsp addressed variables according to
change of %rsp (probably DWARF2 sais so for DW_OP_fbreg). I think it is a
better solution than emitting new locations to location list for all variables
located on stack after each "push" and "pop" which would cause too large debug
info.
When I looked to gdb/dwarf2loc.c I see there:
/* FIXME: cagney/2003-03-26: This code should be using
get_frame_base_address(), and then implement a dwarf2 specific
this_base method. */
Probably this is related to my problem.
I tested it on attached C file, assembler with debug info and x86-64 binary
is attached too.
GDB's output:
# g is the first argument on stack, the first 6 arguments are in registers
Breakpoint 1, func1 (a=10, b=20, c=30, d=40, e=50, f=60, g=70, seq=0) at m.c:5
5 {
2: x/i $pc 0x400400 <func1>: push %r12
1: g = 70
(gdb) ni
0x0000000000400402 5 {
2: x/i $pc 0x400402 <func1+2>: mov %rcx,%r12
# here it looks GDB did not recompute address
1: g = 4195497
(gdb)
0x0000000000400405 5 {
2: x/i $pc 0x400405 <func1+5>: mov %r8,%rcx
1: g = 4195497
(gdb)
0x0000000000400408 5 {
2: x/i $pc 0x400408 <func1+8>: mov %rdx,%r10
1: g = 4195497
(gdb)
0x000000000040040b 5 {
2: x/i $pc 0x40040b <func1+11>: push %rbp
1: g = 4195497
(gdb)
0x000000000040040c 5 {
2: x/i $pc 0x40040c <func1+12>: mov %rdi,%rbp
1: g = 4195520
(gdb)
0x000000000040040f 5 {
2: x/i $pc 0x40040f <func1+15>: push %rbx
1: g = 4195520
(gdb)
0x0000000000400410 5 {
2: x/i $pc 0x400410 <func1+16>: mov 0x20(%rsp,1),%r8
1: g = 548682067112
# here g was loaded from stack to %r8
(gdb)
0x0000000000400415 5 {
2: x/i $pc 0x400415 <func1+21>: mov %rsi,%rbx
1: g = 70
(gdb)
Josef
[-- Attachment #2: m.c --]
[-- Type: text/x-csrc, Size: 296 bytes --]
long volatile vol;
long
func1 (long a, long b, long c, long d, long e, long f, long g, int seq)
{
vol = a + b + c + d + e + f + g;
if (seq == 3)
return vol;
return func1 (g, f, e, d, c, b, a, seq + 1);
}
int
main ()
{
vol = func1 (10, 20, 30, 40, 50, 60, 70, 0);
return (int) vol;
}
[-- Attachment #3: m.s --]
[-- Type: text/plain, Size: 18353 bytes --]
.file "m.c"
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.section .debug_info,"",@progbits
.Ldebug_info0:
.section .debug_line,"",@progbits
.Ldebug_line0:
.text
.Ltext0:
.p2align 4,,15
.globl func1
.type func1, @function
func1:
.LFB2:
# m.c:5
.file 1 "m.c"
.loc 1 5 0
.LVL0:
# basic block 0
pushq %r12
.LCFI0:
movq %rcx, %r12
.LVL1:
movq %r8, %rcx
.LVL2:
movq %rdx, %r10
.LVL3:
pushq %rbp
.LCFI1:
movq %rdi, %rbp
.LVL4:
pushq %rbx
.LCFI2:
movq 32(%rsp), %r8
.LVL5:
movq %rsi, %rbx
.LVL6:
movl 40(%rsp), %r11d
.LVL7:
jmp .L3
.p2align 4,,7
.L6:
# basic block 1
# m.c:11
.loc 1 11 0
movq %r10, %rdx
.LVL8:
movq %rbx, %rsi
.LVL9:
movq %rbp, %rdi
.LVL10:
movq %r9, %rbx
.LVL11:
movq %r8, %rbp
.LVL12:
movq %rcx, %r10
.LVL13:
movq %rsi, %r9
.LVL14:
movq %rdx, %rcx
.LVL15:
movq %rdi, %r8
incl %r11d
.L3:
# basic block 2
# m.c:6
.loc 1 6 0
leaq (%rbp,%rbx), %rax
addq %r10, %rax
addq %r12, %rax
addq %rcx, %rax
addq %r9, %rax
addq %r8, %rax
# m.c:8
.loc 1 8 0
cmpl $3, %r11d
# m.c:6
.loc 1 6 0
movq %rax, vol(%rip)
# m.c:8
.loc 1 8 0
jne .L6
# basic block 3
# m.c:12
.loc 1 12 0
popq %rbx
.LVL16:
popq %rbp
.LVL17:
popq %r12
.LVL18:
# m.c:9
.loc 1 9 0
movq vol(%rip), %rax
# m.c:12
.loc 1 12 0
ret
.LFE2:
.size func1, .-func1
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB3:
# m.c:16
.loc 1 16 0
# basic block 0
subq $16, %rsp
.LCFI3:
# m.c:17
.loc 1 17 0
movl $60, %r9d
movl $50, %r8d
movl $40, %ecx
movl $30, %edx
movl $20, %esi
movl $10, %edi
movl $0, 8(%rsp)
movq $70, (%rsp)
call func1
movq %rax, vol(%rip)
# m.c:18
.loc 1 18 0
movq vol(%rip), %rax
# m.c:19
.loc 1 19 0
addq $16, %rsp
ret
.LFE3:
.size main, .-main
.comm vol,8,8
#APP
.section .debug_frame,"",@progbits
.Lframe0:
.long .LECIE0-.LSCIE0 # Length of Common Information Entry
.LSCIE0:
.long 0xffffffff # CIE Identifier Tag
.byte 0x1 # CIE Version
.ascii "\0" # CIE Augmentation
.uleb128 0x1 # CIE Code Alignment Factor
.sleb128 -8 # CIE Data Alignment Factor
.byte 0x10 # CIE RA Column
.byte 0xc # DW_CFA_def_cfa
.uleb128 0x7
.uleb128 0x8
.byte 0x90 # DW_CFA_offset, column 0x10
.uleb128 0x1
.align 8
.LECIE0:
.LSFDE0:
.long .LEFDE0-.LASFDE0 # FDE Length
.LASFDE0:
.long .Lframe0 # FDE CIE offset
.quad .LFB2 # FDE initial location
.quad .LFE2-.LFB2 # FDE address range
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI0-.LFB2
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x10
.byte 0x8c # DW_CFA_offset, column 0xc
.uleb128 0x2
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI1-.LCFI0
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x18
.byte 0x86 # DW_CFA_offset, column 0x6
.uleb128 0x3
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI2-.LCFI1
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x20
.byte 0x83 # DW_CFA_offset, column 0x3
.uleb128 0x4
.align 8
.LEFDE0:
.LSFDE2:
.long .LEFDE2-.LASFDE2 # FDE Length
.LASFDE2:
.long .Lframe0 # FDE CIE offset
.quad .LFB3 # FDE initial location
.quad .LFE3-.LFB3 # FDE address range
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI3-.LFB3
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x18
.align 8
.LEFDE2:
#NO_APP
#APP
.section .eh_frame,"a",@progbits
.Lframe1:
.long .LECIE1-.LSCIE1 # Length of Common Information Entry
.LSCIE1:
.long 0x0 # CIE Identifier Tag
.byte 0x1 # CIE Version
.ascii "\0" # CIE Augmentation
.uleb128 0x1 # CIE Code Alignment Factor
.sleb128 -8 # CIE Data Alignment Factor
.byte 0x10 # CIE RA Column
.byte 0xc # DW_CFA_def_cfa
.uleb128 0x7
.uleb128 0x8
.byte 0x90 # DW_CFA_offset, column 0x10
.uleb128 0x1
.align 8
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1 # FDE Length
.LASFDE1:
.long .LASFDE1-.Lframe1 # FDE CIE offset
.quad .LFB2 # FDE initial location
.quad .LFE2-.LFB2 # FDE address range
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI0-.LFB2
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x10
.byte 0x8c # DW_CFA_offset, column 0xc
.uleb128 0x2
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI1-.LCFI0
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x18
.byte 0x86 # DW_CFA_offset, column 0x6
.uleb128 0x3
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI2-.LCFI1
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x20
.byte 0x83 # DW_CFA_offset, column 0x3
.uleb128 0x4
.align 8
.LEFDE1:
.LSFDE3:
.long .LEFDE3-.LASFDE3 # FDE Length
.LASFDE3:
.long .LASFDE3-.Lframe1 # FDE CIE offset
.quad .LFB3 # FDE initial location
.quad .LFE3-.LFB3 # FDE address range
.byte 0x4 # DW_CFA_advance_loc4
.long .LCFI3-.LFB3
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x18
.align 8
.LEFDE3:
#NO_APP
.text
.Letext0:
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LLST0:
.quad .LVL0-.text # Location list begin address (*.LLST0)
.quad .LVL4-.text # Location list end address (*.LLST0)
.value 0x1 # Location expression size
.byte 0x55 # DW_OP_reg5
.quad .LVL4-.text # Location list begin address (*.LLST0)
.quad .LVL10-.text # Location list end address (*.LLST0)
.value 0x1 # Location expression size
.byte 0x56 # DW_OP_reg6
.quad .LVL10-.text # Location list begin address (*.LLST0)
.quad .LVL12-.text # Location list end address (*.LLST0)
.value 0x1 # Location expression size
.byte 0x55 # DW_OP_reg5
.quad .LVL12-.text # Location list begin address (*.LLST0)
.quad .LVL15-.text # Location list end address (*.LLST0)
.value 0x1 # Location expression size
.byte 0x56 # DW_OP_reg6
.quad .LVL15-.text # Location list begin address (*.LLST0)
.quad .LFE2-.text # Location list end address (*.LLST0)
.value 0x1 # Location expression size
.byte 0x55 # DW_OP_reg5
.quad 0x0 # Location list terminator begin (*.LLST0)
.quad 0x0 # Location list terminator end (*.LLST0)
.LLST1:
.quad .LVL0-.text # Location list begin address (*.LLST1)
.quad .LVL6-.text # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x54 # DW_OP_reg4
.quad .LVL6-.text # Location list begin address (*.LLST1)
.quad .LVL9-.text # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x53 # DW_OP_reg3
.quad .LVL9-.text # Location list begin address (*.LLST1)
.quad .LVL11-.text # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x54 # DW_OP_reg4
.quad .LVL11-.text # Location list begin address (*.LLST1)
.quad .LVL13-.text # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x53 # DW_OP_reg3
.quad .LVL13-.text # Location list begin address (*.LLST1)
.quad .LFE2-.text # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x54 # DW_OP_reg4
.quad 0x0 # Location list terminator begin (*.LLST1)
.quad 0x0 # Location list terminator end (*.LLST1)
.LLST2:
.quad .LVL0-.text # Location list begin address (*.LLST2)
.quad .LVL3-.text # Location list end address (*.LLST2)
.value 0x1 # Location expression size
.byte 0x51 # DW_OP_reg1
.quad .LVL3-.text # Location list begin address (*.LLST2)
.quad .LVL8-.text # Location list end address (*.LLST2)
.value 0x1 # Location expression size
.byte 0x5a # DW_OP_reg10
.quad .LVL8-.text # Location list begin address (*.LLST2)
.quad .LVL13-.text # Location list end address (*.LLST2)
.value 0x1 # Location expression size
.byte 0x51 # DW_OP_reg1
.quad .LVL13-.text # Location list begin address (*.LLST2)
.quad .LVL14-.text # Location list end address (*.LLST2)
.value 0x1 # Location expression size
.byte 0x5a # DW_OP_reg10
.quad .LVL14-.text # Location list begin address (*.LLST2)
.quad .LFE2-.text # Location list end address (*.LLST2)
.value 0x1 # Location expression size
.byte 0x51 # DW_OP_reg1
.quad 0x0 # Location list terminator begin (*.LLST2)
.quad 0x0 # Location list terminator end (*.LLST2)
.LLST3:
.quad .LVL0-.text # Location list begin address (*.LLST3)
.quad .LVL1-.text # Location list end address (*.LLST3)
.value 0x1 # Location expression size
.byte 0x52 # DW_OP_reg2
.quad .LVL1-.text # Location list begin address (*.LLST3)
.quad .LVL18-.text # Location list end address (*.LLST3)
.value 0x1 # Location expression size
.byte 0x5c # DW_OP_reg12
.quad 0x0 # Location list terminator begin (*.LLST3)
.quad 0x0 # Location list terminator end (*.LLST3)
.LLST4:
.quad .LVL0-.text # Location list begin address (*.LLST4)
.quad .LVL2-.text # Location list end address (*.LLST4)
.value 0x1 # Location expression size
.byte 0x58 # DW_OP_reg8
.quad .LVL2-.text # Location list begin address (*.LLST4)
.quad .LFE2-.text # Location list end address (*.LLST4)
.value 0x1 # Location expression size
.byte 0x52 # DW_OP_reg2
.quad 0x0 # Location list terminator begin (*.LLST4)
.quad 0x0 # Location list terminator end (*.LLST4)
.LLST5:
.quad .LVL0-.text # Location list begin address (*.LLST5)
.quad .LVL5-.text # Location list end address (*.LLST5)
.value 0x2 # Location expression size
.byte 0x91 # DW_OP_fbreg
.sleb128 8
.quad .LVL5-.text # Location list begin address (*.LLST5)
.quad .LFE2-.text # Location list end address (*.LLST5)
.value 0x1 # Location expression size
.byte 0x58 # DW_OP_reg8
.quad 0x0 # Location list terminator begin (*.LLST5)
.quad 0x0 # Location list terminator end (*.LLST5)
.LLST6:
.quad .LVL0-.text # Location list begin address (*.LLST6)
.quad .LVL7-.text # Location list end address (*.LLST6)
.value 0x2 # Location expression size
.byte 0x91 # DW_OP_fbreg
.sleb128 16
.quad .LVL7-.text # Location list begin address (*.LLST6)
.quad .LFE2-.text # Location list end address (*.LLST6)
.value 0x1 # Location expression size
.byte 0x5b # DW_OP_reg11
.quad 0x0 # Location list terminator begin (*.LLST6)
.quad 0x0 # Location list terminator end (*.LLST6)
.section .debug_info
.long 0xfd # Length of Compilation Unit Info
.value 0x2 # DWARF version number
.long .Ldebug_abbrev0 # Offset Into Abbrev. Section
.byte 0x8 # Pointer Size (in bytes)
.uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit)
.long .Ldebug_line0 # DW_AT_stmt_list
.quad .Letext0 # DW_AT_high_pc
.quad .Ltext0 # DW_AT_low_pc
.long .LASF1 # DW_AT_producer: "GNU C 3.4 20030924 (experimental)"
.byte 0x1 # DW_AT_language
.ascii "m.c\0" # DW_AT_name
.long .LASF2 # DW_AT_comp_dir: "/abuild2/zlomekj/vt"
.uleb128 0x2 # (DIE (0x2d) DW_TAG_subprogram)
.long 0xb9 # DW_AT_sibling
.byte 0x1 # DW_AT_external
.long .LASF3 # DW_AT_name: "func1"
.byte 0x1 # DW_AT_decl_file
.byte 0x5 # DW_AT_decl_line
.byte 0x1 # DW_AT_prototyped
.long 0xb9 # DW_AT_type
.quad .LFB2 # DW_AT_low_pc
.quad .LFE2 # DW_AT_high_pc
.byte 0x1 # DW_AT_frame_base
.byte 0x57 # DW_OP_reg7
.uleb128 0x3 # (DIE (0x50) DW_TAG_formal_parameter)
.ascii "a\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xb9 # DW_AT_type
.long .LLST0 # DW_AT_location
.uleb128 0x3 # (DIE (0x5d) DW_TAG_formal_parameter)
.ascii "b\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xb9 # DW_AT_type
.long .LLST1 # DW_AT_location
.uleb128 0x3 # (DIE (0x6a) DW_TAG_formal_parameter)
.ascii "c\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xb9 # DW_AT_type
.long .LLST2 # DW_AT_location
.uleb128 0x3 # (DIE (0x77) DW_TAG_formal_parameter)
.ascii "d\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xb9 # DW_AT_type
.long .LLST3 # DW_AT_location
.uleb128 0x3 # (DIE (0x84) DW_TAG_formal_parameter)
.ascii "e\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xb9 # DW_AT_type
.long .LLST4 # DW_AT_location
.uleb128 0x4 # (DIE (0x91) DW_TAG_formal_parameter)
.ascii "f\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xb9 # DW_AT_type
.byte 0x1 # DW_AT_location
.byte 0x59 # DW_OP_reg9
.uleb128 0x3 # (DIE (0x9c) DW_TAG_formal_parameter)
.ascii "g\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xb9 # DW_AT_type
.long .LLST5 # DW_AT_location
.uleb128 0x3 # (DIE (0xa9) DW_TAG_formal_parameter)
.ascii "seq\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x4 # DW_AT_decl_line
.long 0xc0 # DW_AT_type
.long .LLST6 # DW_AT_location
.byte 0x0 # end of children of DIE 0x2d
.uleb128 0x5 # (DIE (0xb9) DW_TAG_base_type)
.long .LASF0 # DW_AT_name: "long int"
.byte 0x8 # DW_AT_byte_size
.byte 0x5 # DW_AT_encoding
.uleb128 0x6 # (DIE (0xc0) DW_TAG_base_type)
.ascii "int\0" # DW_AT_name
.byte 0x4 # DW_AT_byte_size
.byte 0x5 # DW_AT_encoding
.uleb128 0x7 # (DIE (0xc7) DW_TAG_subprogram)
.byte 0x1 # DW_AT_external
.long .LASF4 # DW_AT_name: "main"
.byte 0x1 # DW_AT_decl_file
.byte 0x10 # DW_AT_decl_line
.long 0xc0 # DW_AT_type
.quad .LFB3 # DW_AT_low_pc
.quad .LFE3 # DW_AT_high_pc
.byte 0x1 # DW_AT_frame_base
.byte 0x57 # DW_OP_reg7
.uleb128 0x8 # (DIE (0xe5) DW_TAG_variable)
.ascii "vol\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file
.byte 0x1 # DW_AT_decl_line
.long 0xfb # DW_AT_type
.byte 0x1 # DW_AT_external
.byte 0x9 # DW_AT_location
.byte 0x3 # DW_OP_addr
.quad vol
.uleb128 0x9 # (DIE (0xfb) DW_TAG_volatile_type)
.long 0xb9 # DW_AT_type
.byte 0x0 # end of children of DIE 0xb
.section .debug_abbrev
.uleb128 0x1 # (abbrev code)
.uleb128 0x11 # (TAG: DW_TAG_compile_unit)
.byte 0x1 # DW_children_yes
.uleb128 0x10 # (DW_AT_stmt_list)
.uleb128 0x6 # (DW_FORM_data4)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x25 # (DW_AT_producer)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x13 # (DW_AT_language)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3 # (DW_AT_name)
.uleb128 0x8 # (DW_FORM_string)
.uleb128 0x1b # (DW_AT_comp_dir)
.uleb128 0xe # (DW_FORM_strp)
.byte 0x0
.byte 0x0
.uleb128 0x2 # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0x1 # DW_children_yes
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x3f # (DW_AT_external)
.uleb128 0xc # (DW_FORM_flag)
.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 0x27 # (DW_AT_prototyped)
.uleb128 0xc # (DW_FORM_flag)
.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 0x1 # (DW_FORM_addr)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0xa # (DW_FORM_block1)
.byte 0x0
.byte 0x0
.uleb128 0x3 # (abbrev code)
.uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
.byte 0x0 # 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 0x6 # (DW_FORM_data4)
.byte 0x0
.byte 0x0
.uleb128 0x4 # (abbrev code)
.uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
.byte 0x0 # 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 0xa # (DW_FORM_block1)
.byte 0x0
.byte 0x0
.uleb128 0x5 # (abbrev code)
.uleb128 0x24 # (TAG: DW_TAG_base_type)
.byte 0x0 # DW_children_no
.uleb128 0x3 # (DW_AT_name)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0xb # (DW_AT_byte_size)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3e # (DW_AT_encoding)
.uleb128 0xb # (DW_FORM_data1)
.byte 0x0
.byte 0x0
.uleb128 0x6 # (abbrev code)
.uleb128 0x24 # (TAG: DW_TAG_base_type)
.byte 0x0 # DW_children_no
.uleb128 0x3 # (DW_AT_name)
.uleb128 0x8 # (DW_FORM_string)
.uleb128 0xb # (DW_AT_byte_size)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x3e # (DW_AT_encoding)
.uleb128 0xb # (DW_FORM_data1)
.byte 0x0
.byte 0x0
.uleb128 0x7 # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0x0 # DW_children_no
.uleb128 0x3f # (DW_AT_external)
.uleb128 0xc # (DW_FORM_flag)
.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 0x1 # (DW_FORM_addr)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0xa # (DW_FORM_block1)
.byte 0x0
.byte 0x0
.uleb128 0x8 # (abbrev code)
.uleb128 0x34 # (TAG: DW_TAG_variable)
.byte 0x0 # 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 0x3f # (DW_AT_external)
.uleb128 0xc # (DW_FORM_flag)
.uleb128 0x2 # (DW_AT_location)
.uleb128 0xa # (DW_FORM_block1)
.byte 0x0
.byte 0x0
.uleb128 0x9 # (abbrev code)
.uleb128 0x35 # (TAG: DW_TAG_volatile_type)
.byte 0x0 # DW_children_no
.uleb128 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0x0
.byte 0x0
.byte 0x0
.section .debug_pubnames,"",@progbits
.long 0x29 # Length of Public Names Info
.value 0x2 # DWARF Version
.long .Ldebug_info0 # Offset of Compilation Unit Info
.long 0x101 # Compilation Unit Length
.long 0x2d # DIE offset
.ascii "func1\0" # external name
.long 0xc7 # DIE offset
.ascii "main\0" # external name
.long 0xe5 # DIE offset
.ascii "vol\0" # external name
.long 0x0
.section .debug_aranges,"",@progbits
.long 0x2c # Length of Address Ranges Info
.value 0x2 # DWARF Version
.long .Ldebug_info0 # Offset of Compilation Unit Info
.byte 0x8 # Size of Address
.byte 0x0 # Size of Segment Descriptor
.value 0x0 # Pad to 16 byte boundary
.value 0x0
.quad .Ltext0 # Address
.quad .Letext0-.Ltext0 # Length
.quad 0x0
.quad 0x0
.section .debug_str,"MS",@progbits,1
.LASF4:
.string "main"
.LASF3:
.string "func1"
.LASF1:
.string "GNU C 3.4 20030924 (experimental)"
.LASF2:
.string "/abuild2/zlomekj/vt"
.LASF0:
.string "long int"
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.4 20030924 (experimental)"
[-- Attachment #4: a.out --]
[-- Type: application/octet-stream, Size: 15033 bytes --]
next reply other threads:[~2003-10-01 14:43 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-01 14:43 Josef Zlomek [this message]
2003-10-01 14:49 ` Daniel Jacobowitz
2003-10-01 15:21 ` Josef Zlomek
2003-10-01 15:44 ` Josef Zlomek
2003-10-01 15:54 ` Daniel Jacobowitz
2003-10-01 16:03 ` Josef Zlomek
2003-10-01 16:22 ` Daniel Jacobowitz
2003-10-01 17:41 ` Josef Zlomek
2003-10-01 17:44 ` Daniel Jacobowitz
2003-10-01 17:48 ` Josef Zlomek
2003-10-06 6:22 ` Richard Henderson
2003-10-06 6:40 ` Josef Zlomek
2003-10-06 13:46 ` Daniel Jacobowitz
2003-10-06 14:49 ` Daniel Berlin
2003-10-07 21:48 ` Daniel Jacobowitz
2003-10-08 5:09 ` Josef Zlomek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20031001144330.GA11707@artax.karlin.mff.cuni.cz \
--to=zlomj9am@artax.karlin.mff.cuni.cz \
--cc=gdb@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox