diff options
author | Jing Yu <jingyu@google.com> | 2011-11-08 21:16:25 -0800 |
---|---|---|
committer | Jing Yu <jingyu@google.com> | 2011-11-09 20:47:14 -0800 |
commit | 1a5a497795d3d9a3d9278ca9c23668ab9dc11587 (patch) | |
tree | 7eea34d551781f75d50788e2b874625179201f89 /libcorkscrew | |
parent | 1e339a710e0993c18c8b96f9224ebd3aa29cf8cd (diff) | |
download | system_core-1a5a497795d3d9a3d9278ca9c23668ab9dc11587.zip system_core-1a5a497795d3d9a3d9278ca9c23668ab9dc11587.tar.gz system_core-1a5a497795d3d9a3d9278ca9c23668ab9dc11587.tar.bz2 |
Link with libgccdemangle.so for name demangling.
1. X86 target will also have name demangling feature.
2. Remove dependency on libiberty.so, since it will not come
with prebuilt toolchain in gcc-4.6 and after.
Change-Id: Iefbb021c5c3171b9467954eafa54046ad6805753
Diffstat (limited to 'libcorkscrew')
-rw-r--r-- | libcorkscrew/Android.mk | 5 | ||||
-rw-r--r-- | libcorkscrew/demangle.c | 13 |
2 files changed, 6 insertions, 12 deletions
diff --git a/libcorkscrew/Android.mk b/libcorkscrew/Android.mk index df019c3..433f93c 100644 --- a/libcorkscrew/Android.mk +++ b/libcorkscrew/Android.mk @@ -28,8 +28,7 @@ ifeq ($(TARGET_ARCH),arm) LOCAL_SRC_FILES += \ arch-arm/backtrace-arm.c \ arch-arm/ptrace-arm.c -LOCAL_CFLAGS += -DCORKSCREW_HAVE_ARCH -DCORKSCREW_HAVE_LIBIBERTY -LOCAL_LDFLAGS += -liberty +LOCAL_CFLAGS += -DCORKSCREW_HAVE_ARCH endif ifeq ($(TARGET_ARCH),x86) LOCAL_SRC_FILES += \ @@ -38,7 +37,7 @@ LOCAL_SRC_FILES += \ LOCAL_CFLAGS += -DCORKSCREW_HAVE_ARCH endif -LOCAL_SHARED_LIBRARIES += libdl libcutils +LOCAL_SHARED_LIBRARIES += libdl libcutils libgccdemangle LOCAL_CFLAGS += -std=gnu99 -Werror LOCAL_MODULE := libcorkscrew diff --git a/libcorkscrew/demangle.c b/libcorkscrew/demangle.c index ecb2c98..54247cb 100644 --- a/libcorkscrew/demangle.c +++ b/libcorkscrew/demangle.c @@ -21,15 +21,10 @@ #include <cutils/log.h> -#ifdef CORKSCREW_HAVE_LIBIBERTY -// Defined in libiberty.a -extern char *cplus_demangle(const char *mangled, int options); -#endif +extern char *__cxa_demangle (const char *mangled, char *buf, size_t *len, + int *status); char* demangle_symbol_name(const char* name) { -#ifdef CORKSCREW_HAVE_LIBIBERTY - return name ? cplus_demangle(name, 0) : NULL; -#else - return NULL; -#endif + // __cxa_demangle handles NULL by returning NULL + return __cxa_demangle(name, 0, 0, 0); } |