This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: FW: dwarf2 error(microblaze)
- From: Michael Eager <eager at eagerm dot com>
- To: Nagaraju Mekala <nagaraju dot mekala at xilinx dot com>
- Cc: gcc-help <gcc-help at gcc dot gnu dot org>
- Date: Thu, 09 Jun 2011 16:11:51 -0700
- Subject: Re: FW: dwarf2 error(microblaze)
- References: <4c3a277c-f2cf-4c8d-9f8f-1ed8c9b8b136@VA3EHSMHS015.ehs.local>
On 06/09/2011 01:47 AM, Nagaraju Mekala wrote:
I have compiled memorytest.c with default options using Gcc-4.6.0 as you suggested.
DWARF of main(),i and location list referenced are:
<1><47a>: Abbrev Number: 13 (DW_TAG_subprogram)
<47b> DW_AT_external : 1
<47c> DW_AT_name : (indirect string, offset: 0xf4): main
<480> DW_AT_decl_file : 1
<481> DW_AT_decl_line : 59
<482> DW_AT_type :<0x390>
<486> DW_AT_low_pc : 0x3dc
<48a> DW_AT_high_pc : 0x490
<48e> DW_AT_frame_base : 0x2c (location list)
<492> DW_AT_sibling :<0x4a3>
<2><496>: Abbrev Number: 14 (DW_TAG_variable)
<497> DW_AT_name : i
<499> DW_AT_decl_file : 1
<49a> DW_AT_decl_line : 61
<49b> DW_AT_type :<0x390>
<49f> DW_AT_location : 2 byte block: 91 78 (DW_OP_fbreg: -8)
Contents of the .debug_loc section:
Offset Begin End Expression
00000000 000001e4 000001e8 (DW_OP_breg1 (r1): 0)
00000000 000001e8 000001f4 (DW_OP_breg1 (r1): 36)
00000000 000001f4 0000048c (DW_OP_breg19 (r19): 36)
00000000<End of list>
0000002c 0000048c 00000490 (DW_OP_breg1 (r1): 0)
0000002c 00000490 0000049c (DW_OP_breg1 (r1): 36)
0000002c 0000049c 00000570 (DW_OP_breg19 (r19): 36)
0000002c<End of list>
According to my observation .debug_loc at 0000002c Begin location should be 000003dc for main but it is 0000048c is this correct??
Yes.
If you have compiled with -g -O0, the first few instructions for main
should be something like this to set up r19 as the frame pointer:
000003dc <main>:
3dc: 3021ffe0 addik r1, r1, -32
3e0: f9e10000 swi r15, r1, 0
3e4: fa61001c swi r19, r1, 28
3e8: 12610000 addk r19, r1, r0
You can verify this with mb-objdump -d.
The assembly code for main should look something like this:
.globl main
$LFB1:
$LM3:
.ent main
.type main, @function
main:
.frame r19,32,r15 # vars= 0, regs= 1, args= 24
.mask 0x00088000
addik r1,r1,-32
$LCFI3:
swi r15,r1,0
$LCFI4:
swi r19,r1,28
$LCFI5:
addk r19,r1,r0
$LCFI6:
The second entry in .debug_loc should start with this:
$LLST1:
.4byte $LFB1-$Ltext0
.4byte $LCFI3-$Ltext0
.2byte 0x2
.byte 0x71
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077