aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2012-11-27 11:27:26 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2012-11-27 11:27:26 -0800
commit2db19c77b59c71eef27e9876d4c09ceb6966608d (patch)
tree2219c1bb1d4e1e2bce04a99d79bae76787595b6e
parentf3d5fb53ba22c41af4cd787641c93ebe4f8ed8fd (diff)
parent8a2282d1dcafa15f8bd2e8df7c0fc4f1f79ea748 (diff)
downloadlinux-tools-perf-kitkat-mr2-release.tar.gz
* commit '8a2282d1dcafa15f8bd2e8df7c0fc4f1f79ea748': Add on-device symbol demangle support.
-rw-r--r--Android.mk16
-rw-r--r--util/symbol.h13
2 files changed, 19 insertions, 10 deletions
diff --git a/Android.mk b/Android.mk
index 84d24f7..2a91487 100644
--- a/Android.mk
+++ b/Android.mk
@@ -94,8 +94,7 @@ LOCAL_SRC_FILES += \
LOCAL_CFLAGS := -DNO_NEWT_SUPPORT -DNO_LIBPERL -DNO_LIBPYTHON -DNO_STRLCPY -std=gnu99
-# temporary until bfd.h is added
-LOCAL_CFLAGS += -DNO_DEMANGLE
+LOCAL_CFLAGS += -DHAVE_ANDROID_DEMANGLE
LOCAL_CFLAGS += -DDWARF_SUPPORT
# various macros
@@ -130,8 +129,7 @@ LOCAL_SRC_FILES := $(libperf_src_files)
LOCAL_CFLAGS := -DNO_NEWT_SUPPORT -DNO_LIBPERL -DNO_LIBPYTHON -std=gnu99
-# temporary until bfd.h is added
-LOCAL_CFLAGS += -DNO_DEMANGLE
+LOCAL_CFLAGS += -DHAVE_ANDROID_DEMANGLE
LOCAL_CFLAGS += -DDWARF_SUPPORT
# various macros
@@ -188,7 +186,7 @@ perf_src_files := \
LOCAL_SRC_FILES := $(perf_src_files)
-LOCAL_STATIC_LIBRARIES := libperf libdwfl libdw libebl libelf
+LOCAL_STATIC_LIBRARIES := libperf libdwfl libdw libebl libelf libgccdemangle
LOCAL_LDLIBS := -lpthread -ldl
@@ -209,8 +207,7 @@ LOCAL_CFLAGS += -Wno-pointer-arith
# for __used
LOCAL_CFLAGS += -include $(LOCAL_PATH)/util/include/linux/compiler.h
-# temporary until bfd.h is added
-LOCAL_CFLAGS += -DNO_DEMANGLE
+LOCAL_CFLAGS += -DHAVE_ANDROID_DEMANGLE
# unique
LOCAL_CFLAGS += -DPERF_HTML_PATH='""'
@@ -240,7 +237,7 @@ LOCAL_SRC_FILES += \
bench/sched-pipe.c \
arch/arm/util/dwarf-regs.c
-LOCAL_STATIC_LIBRARIES := libperf libdwfl libdw libebl libelf
+LOCAL_STATIC_LIBRARIES := libperf libdwfl libdw libebl libelf libgccdemangle
LOCAL_SHARED_LIBRARIES := libdl
@@ -256,8 +253,7 @@ LOCAL_CFLAGS += -include $(LOCAL_PATH)/util/include/linux/compiler.h
# for various GNU extensions
LOCAL_CFLAGS += -include external/elfutils/bionic-fixup/AndroidFixup.h
-# temporary until bfd.h is added
-LOCAL_CFLAGS += -DNO_DEMANGLE
+LOCAL_CFLAGS += -DHAVE_ANDROID_DEMANGLE
# unique
LOCAL_CFLAGS += -DPERF_HTML_PATH='""'
diff --git a/util/symbol.h b/util/symbol.h
index 5ac01c1..266bb00 100644
--- a/util/symbol.h
+++ b/util/symbol.h
@@ -36,10 +36,23 @@ static inline char *bfd_demangle(void __used *v, const char __used *c,
{
return NULL;
}
+/* ANDROID_CHANGE_BEGIN */
+#else
+#ifdef HAVE_ANDROID_DEMANGLE
+/* in external/gcc-demangle */
+extern char *__cxa_demangle (const char *, char *, size_t *, int *);
+
+static inline char *bfd_demangle(void __used *v, const char __used *c,
+ int __used i)
+{
+ return __cxa_demangle(c, NULL, NULL, NULL);
+}
+/* ANDROID_CHANGE_END */
#else
#include <bfd.h>
#endif
#endif
+#endif
int hex2u64(const char *ptr, u64 *val);
char *strxfrchar(char *s, char from, char to);