Mirror of the gdb mailing list
 help / color / mirror / Atom feed
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 --]

             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