Hi,
I see the fail in gdb.dwarf2/implptr-optimized-out.exp in thumb mode
(gdb) p p->f^M
No symbol "p" in current context.^M
(gdb) FAIL: gdb.dwarf2/implptr-optimized-out.exp: p p->f
and the crash on powerpc64
(gdb) continue^M
Continuing.^M
^M
Program received signal SIGSEGV, Segmentation fault.^M
0x7d82100810000828 in ?? ()
The cause of both is that we incorrectly set attribute low_pc, since
main isn't resolved to function start address on these targets.
In this patch, we replace attributes name, low_pc and high_pc with
MACRO_AT_func.  The fail on thumb mode is fixed, and crash on
powerpc64 is fixed too.
gdb/testsuite:
2014-11-14  Yao Qi  <yao@codesourcery.com>
	* gdb.dwarf2/implptr-optimized-out.exp (Dwarf::assemble):
	Replace name, low_pc and high_pc with MACRO_AT_func.
+2014-11-14  Yao Qi  <yao@codesourcery.com>
+
+       * gdb.dwarf2/implptr-optimized-out.exp (Dwarf::assemble):
+       Replace name, low_pc and high_pc with MACRO_AT_func.
+
 2014-11-14  Yao Qi  <yao@codesourcery.com>
 
        * gdb.dwarf2/implptr-optimized-out.exp: Use Dwarf::assemble to
 
 # Create the DWARF.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile
+
     cu { version 3 addr_size 4 } {
        compile_unit {
            {producer "GNU C 4.4.3"}
            }
 
            subprogram {
-               {name main}
-               {low_pc main addr}
-               {high_pc main+0x100 addr}
+               {MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
                {type :$int_label}
                {external 1 flag}
            } {