From 763905a3ad8f98d33bd9319790a8d53904554265 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Mon, 27 Oct 2014 16:37:38 +0800 Subject: [PATCH] Fix trace file fails on powerpc64 I see the following fails on powerpc64-linux, (gdb) target tfile tfile-basic.tf^M warning: Uploaded tracepoint 1 has no source location, using raw address^M Tracepoint 1 at 0x10012358^M Created tracepoint 1 for target's tracepoint 1 at 0x10012358.^M (gdb) PASS: gdb.trace/tfile.exp: target tfile tfile-basic.tf info trace^M Num Type Disp Enb Address What^M 1 tracepoint keep y 0x0000000010012358 ^M installed on target^M (gdb) FAIL: gdb.trace/tfile.exp: info tracepoints on trace file -target-select tfile tfile-basic.tf^M =thread-group-started,id="i1",pid="1"^M =thread-created,id="1",group-id="i1"^M &"warning: Uploaded tracepoint 1 has no source location, using raw address\n"^M =breakpoint-created,bkpt={number="1",type="tracepoint",disp="keep",enabled="y", addr="0x0000000010012358",at="",thread-groups=["i1"], times="0",installed="y",original-location="*0x10012358"}^M ~"Created tracepoint 1 for target's tracepoint 1 at 0x10012358.\n"^M ^connected^M (gdb) ^M FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: select trace file These fails are caused by writing function descriptor address into trace file instead of function address. This patch is to teach tfile.c to write function address on powerpc64 target. With this patch applied, fails in tfile.exp and mi-traceframe-changed.exp are fixed. Is it OK? gdb/testsuite: 2014-10-27 Yao Qi * gdb.trace/tfile.c (adjust_function_address) [__powerpc64__ && _CALL_ELF != 2]: Get function address from function descriptor. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.trace/tfile.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 036da6d..2eea791 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-10-27 Yao Qi + + * gdb.trace/tfile.c (adjust_function_address) + [__powerpc64__ && _CALL_ELF != 2]: Get function address from + function descriptor. + 2014-10-24 Don Breazeal * gdb.base/foll-fork.exp (test_follow_fork, diff --git a/gdb/testsuite/gdb.trace/tfile.c b/gdb/testsuite/gdb.trace/tfile.c index e69240a..b673211 100644 --- a/gdb/testsuite/gdb.trace/tfile.c +++ b/gdb/testsuite/gdb.trace/tfile.c @@ -130,6 +130,9 @@ adjust_function_address (uintptr_t func_addr) /* Although Thumb functions are two-byte aligned, function pointers have the Thumb bit set. Clear it. */ return func_addr & ~1; +#elif defined __powerpc64__ && _CALL_ELF != 2 + /* Get function address from function descriptor. */ + return *(uintptr_t *) func_addr; #else return func_addr; #endif -- 2.7.4