[ARM] Debug info is wrong at optimization level -O1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Compiler:

Arm linaro
Target: arm-none-eabi
Configured with:
/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/src/gcc/configure
--build=i686-linux-gnu --host=i686-pc-mingw32 --target=arm-none-eabi
--prefix=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/install-mingw
--enable-languages=c,c++ --disable-decimal-float --disable-libffi
--disable-libgomp --disable-libmudflap --disable-libquadmath
--disable-libssp --disable-libstdcxx-pch --disable-lto --disable-nls
--disable-shared --disable-threads --disable-tls --with-gnu-as
--with-gnu-ld --with-headers=yes --with-newlib
--with-sysroot=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/install-mingw/arm-none-eabi
--with-libiconv-prefix=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/build-mingw/host-libs/usr
--with-gmp=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/build-mingw/host-libs/usr
--with-mpfr=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/build-mingw/host-libs/usr
--with-mpc=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/build-mingw/host-libs/usr
--with-ppl=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/build-mingw/host-libs/usr
--with-cloog=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/build-mingw/host-libs/usr
--with-libelf=/home/rat031/arm_gcc_051612/gcc-arm-none-eabi-4_6-2012q1-20120316/build-mingw/host-libs/usr
--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic
-lm' --with-pkgversion='GNU Tools for ARM Embedded Processors'
--with-extra-multilibs=armv6-m,armv7-m,armv7e-m,armv7-r
Thread model: single
gcc version 4.6.2 20120316 (release) [ARM/embedded-4_6-branch revision
185452] (GNU Tools for ARM Embedded Processors)


invocation line:
arm-none-eabi-gcc -Wl,-Map=output.map -mcpu=cortex-m0 -mthumb
-specs=rdimon.specs -lrdimon -lc -lrdimon test.c -g3 -gdwarf-2 -O1  -o
test.elf --save-temps -dA

Code:

void variables_local();

int main(void)
{
        variables_local();
        return 0;
}



void variables_local()
{
        volatile int SizeOfInt  = sizeof (int);
        volatile int lint = 1024;
        volatile float lfloat = 55.55f;
        volatile double ldouble = 222.222;
        volatile long llong = 123456789;
        volatile unsigned luint = 256;
        volatile char lchar = 'a';
        volatile char *lstring = "hello";
        volatile char mlarray[8] = "testing";
        return;
}

gdb output:

Breakpoint 1, main () at test.c:14
14              variables_local();
(gdb) s
variables_local () at test.c:22
22              volatile int SizeOfInt  = sizeof (int);
(gdb) s
23              volatile int lint = 1024;
(gdb) p SizeOfInt
$1 = 39211
(gdb) s
24              volatile float lfloat = 55.55f;
(gdb) p lint
$2 = 0
(gdb) s
25              volatile double ldouble = 222.222;
(gdb) p lfloat
$3 = 5.60519386e-045
(gdb) s
26              volatile long llong = 123456789;
(gdb) p ldouble
$4 = 518831996932.39624
(gdb) s
27              volatile unsigned luint = 256;
(gdb) p llong
$5 = 1080805146
(gdb) s
28              volatile char lchar = 'a';
(gdb) p luint
$6 = 2680059593
(gdb) s
30              volatile char mlarray[8] = "testing";
(gdb) p lchar
$7 = 97 'a'
(gdb) s
32      }
(gdb) p lchar
$8 = 159 'Y'
(gdb) p lint
$9 = 0
(gdb) p luint
$10 = 2680059593
(gdb)

Issue:

I think dwarf info generated doesn't take into account the push/pop instruction

variables_local:
.LFB1:
	.file 1 "../Sources/main.c"
	@ ../Sources/main.c:21
	.loc 1 21 0
	.cfi_startproc
	push	{r4, lr}
.LCFI0:
	.cfi_def_cfa_offset 8
	.cfi_offset 4, -8
	.cfi_offset 14, -4
	@ basic block 2
	sub	sp, sp, #16
.LCFI1:
	.cfi_def_cfa_offset 24
	@ ../Sources/main.c:22
	.loc 1 22 0
	mov	r3, #4
	str	r3, [sp, #12]
.LVL0:


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux