arch/arm/kernel/setup.c does not compile at -O0

Mason slash.tmp at free.fr
Thu Jul 30 06:58:53 PDT 2015


On 30/07/2015 15:14, Robin Murphy wrote:

> On 30/07/15 13:53, Mason wrote:
> 
>> Any idea how I can get DS-5 to properly handle local variables?
> 
> I carry a patch locally reverting 2062afb4f804 - at least on arm64, the 
> debugger manages to resolve optimised locals considerably better without 
> the -fno-var-tracking-assignments option. The Kconfig "Generate dwarf4 
> debug info" option is a good idea, and "Generate readable assembly code" 
> sometimes helps a bit too.

I reverted 2062afb4f804 (I'm using 4.9.3 so I think it's safe)

AFAICT, config DEBUG_INFO_DWARF4 isn't available in 3.14
(I think bfaf2dd3509b was included in 3.16)

But the problem seems to be on a higher level. My debugger
just doesn't see ANY local variable whatsoever.

For example, if I break in serial8250_probe, step past the
initializations, then the Eclipse "Variables" tab states
Locals: 0 variables (as it does everywhere, mind you).

If I try to print from the "Commands" tab:

print p
ERROR(EXP8): Could not find the symbol "p"
print irqflag
ERROR(EXP8): Could not find the symbol "irqflag"

I'm doing wrong something fundamental.

This is my work flow:

Start the system, interrupt it in Uboot
Connect the DS-5 probe
Set a HW breakpoint at the address of start_kernel
Let Uboot load the kernel
When the breakpoint is hit, load the symbols with:
  add-symbol-file /opt/linux-3.14/vmlinux

=> Is vmlinux supposed to contain the debug info for the
local variables? (I mean 'automatic' variables, in the
C sense.)

> Whilst in general -O0 isn't going to work, I've had some success using 
> "__attribute__ ((optimize(0)))" on individual functions of interest.

This will work at the function granularity?

Regards.




More information about the linux-arm-kernel mailing list