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]

A Qn on GCC generated ARM asm code


Hi,

I have a question on the contents of a library compiled using gcc (V
3.4.3) for an ARM11 target.
When I disassemble code in the .text section of a library a.so, I find
some data beyond what appears to be the end of the a function's
assembly code.

for eg  a function abc (prelinked & stripped) seems to have the
following assembly:

414afb68:   e92d4420    stmdb   sp!, {r5, sl, lr}
414afb6c:   e59fa03c    ldr sl, [pc, #60]   ; 414afbb0
414afb70:   e59f303c    ldr r3, [pc, #60]   ; 414afbb4
414afb74:   e08fa00a    add sl, pc, sl
414afb78:   e79a2003    ldr r2, [sl, r3]
414afb7c:   e1a03001    mov r3, r1
414afb80:   e1a05000    mov r5, r0
414afb84:   e592c000    ldr ip, [r2]
414afb88:   e59f2028    ldr r2, [pc, #40]   ; 414afbb8
414afb8c:   e24dd00c    sub sp, sp, #12 ; 0xc
414afb90:   e1a0100c    mov r1, ip
414afb94:   e08a2002    add r2, sl, r2
414afb98:   e3a0c000    mov ip, #0  ; 0x0
414afb9c:   e58dc000    str ip, [sp]
414afba0:   ebfff6bb    bl  414ad694
414afba4:   e1a00005    mov r0, r5
414afba8:   e28dd00c    add sp, sp, #12 ; 0xc
414afbac:   e8bd8420    ldmia   sp!, {r5, sl, pc}
414afbb0:   002b3574    eoreq   r3, fp, r4, ror r5
414afbb4:   00004ab8    streqh  r4, [r0], -r8
414afbb8:   fff77f18    swinv   0x00f77f18

The function appears to have ended at address 0x414afbac. However the
next function starts only at 0x414afbbc. The bytes at 0x414afbb0
through 0x414afbb8 seem to represent some data (the unstripped elf
tags them with a $d) and the function code seems to make a reference
to these addresses. What exactly are these data parameters? As none of
these data values are present in the C-code of the function abc, it
appears to have been inserted by the compiler.
It would be of great help if someone could help me locate the
source/logic behind these extra bytes.

Thanks
Binesh


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