Hello!

I noticed the following on ARM, GCC trunk -- didn't check yet whether it
is ARM-specific; may be a general issue.

Hacking out the forcing-off of emitting CFI statements in arm.c, I see
the following function prologue emitted (-O -g):

            .text
    .Ltext0:
            .cfi_sections   .debug_frame
            .align  2
            .global foo
            .type   foo, %function
    foo:
    .LFB0:
            .file 1 "c.c"
            .loc 1 2 0
            .cfi_startproc
            @ args = 0, pretend = 0, frame = 0
            @ frame_needed = 0, uses_anonymous_args = 0
            stmfd   sp!, {r3, lr}
    .LCFI0:
            .cfi_def_cfa_offset 8
            .loc 1 4 0
            mov     r0, #33
            .cfi_offset 14, -4
            .cfi_offset 3, -8
            bl      bar
    [...]

Comparing this to -pg:

     .LCFI0:
            .cfi_def_cfa_offset 8
    +       push    {lr}
    +       bl      __gnu_mcount_nc
            .loc 1 4 0
            mov     r0, #33

Shouldn't ``.cfi_adjust_cfa_offset 4'' or equivalent be emitted, too?  If
I'm interpreting the .debug_frame correctly that is generated directly by
GCC without using CFI statemnts, it seems to have the same problem.  Or
am I misunderstanding something?


Regards,
 Thomas

Attachment: pgpWLzqvauAqW.pgp
Description: PGP signature

Reply via email to