summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-02-02 19:32:37 -0200
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-02-02 19:32:37 -0200
commit7495af7b7fed8f6589f1816aad34dd45952c9ff2 (patch)
treed1cb09de2cc57578a4734bf935d286f2dd6824fa
parentfb769648764b3de947bbb8124b3623d0cd1ccb63 (diff)
downloadgperftools-at7_0-release.tar.gz
Fix getpc_test for PPC64v2 LEat7_0-release
This patch fix the PPC64 guard to get the function address for PPC64v2. It removes the use of an indirection (to get the ODP text address), since the PPCv2 does not have function descriptors.
-rw-r--r--src/tests/getpc_test.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/tests/getpc_test.cc b/src/tests/getpc_test.cc
index 1277636..b6df69b 100644
--- a/src/tests/getpc_test.cc
+++ b/src/tests/getpc_test.cc
@@ -99,14 +99,16 @@ int main(int argc, char** argv) {
char* expected = (char*)&RoutineCallingTheSignal;
char* actual = (char*)getpc_retval;
- // For ia64, ppc64, and parisc64, the function pointer is actually
+ // For ia64, ppc64v1, and parisc64, the function pointer is actually
// a struct. For instance, ia64's dl-fptr.h:
// struct fdesc { /* An FDESC is a function descriptor. */
// ElfW(Addr) ip; /* code entry point */
// ElfW(Addr) gp; /* global pointer */
// };
// We want the code entry point.
-#if defined(__ia64) || defined(__powerpc64__) // NOTE: ppc64 is UNTESTED
+ // NOTE: ppc64 ELFv2 (Little Endian) does not have function pointers
+#if defined(__ia64) || \
+ (defined(__powerpc64__) && _CALL_ELF != 2)
expected = ((char**)expected)[0]; // this is "ip"
#endif