This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: FW: dwarf2 error(microblaze)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]