On Wed, Nov 04, 2009 at 11:24:34AM -0500, Jean Christophe Beyler wrote: > However, I've been going through the first step : running GDB, setting > a break-point and doing a continue to see what I get and try to get > the information right for O3 too. > > In O0, I get: > Breakpoint @@ 1, foo (a=4, b=3, c=2, d=1) at hello.c:10 > > In O3, I get: > Breakpoint @@ 1, foo (a=Variable "a" is not available.) at hello.c:11 > > It seems that, in the O0 case, the Dwarf information is automatically > propagated to say "The input register is now here", but when I do it > in O3, I'm issuing the information in the same way. > > What am I exactly missing? Any ideas why GDB would not have enough > information in this case?
You should look at the DWARF information (readelf -wi) and see if the function parameters have DW_AT_location attributes. If they don't, then you need to ensure that they get generated. If they do, then perhaps they are wrong or GDB is not interpreting them correctly. (They get generated with optimization and interpreted correctly on other platforms that pass args in registers.) -Nathan