You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.5 KiB
60 lines
2.5 KiB
6 years ago
|
commit 763905a3ad8f98d33bd9319790a8d53904554265
|
||
|
Author: Yao Qi <yao@codesourcery.com>
|
||
|
Date: Mon Oct 27 16:37:38 2014 +0800
|
||
|
|
||
|
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 <write_basic_trace_file>^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="<write_basic_trace_file>",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 <yao@codesourcery.com>
|
||
|
|
||
|
* gdb.trace/tfile.c (adjust_function_address)
|
||
|
[__powerpc64__ && _CALL_ELF != 2]: Get function address from
|
||
|
function descriptor.
|
||
|
|
||
|
Index: gdb-7.6.1/gdb/testsuite/gdb.trace/tfile.c
|
||
|
===================================================================
|
||
|
--- gdb-7.6.1.orig/gdb/testsuite/gdb.trace/tfile.c
|
||
|
+++ gdb-7.6.1/gdb/testsuite/gdb.trace/tfile.c
|
||
|
@@ -107,6 +107,9 @@ adjust_function_address (uintptr_t func_
|
||
|
/* 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
|