diff --git a/libc/Android.mk b/libc/Android.mk index 0de0fb21c..e632ee72f 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -1384,7 +1384,8 @@ LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/version_script.txt # We'd really like to do this for all architectures, but since this wasn't done # before, these symbols must continue to be exported on LP32 for binary # compatibility. -LOCAL_LDFLAGS_64 := -Wl,--exclude-libs,libgcc.a +# TODO: disabled for http://b/20065774. +#LOCAL_LDFLAGS_64 := -Wl,--exclude-libs,libgcc.a # TODO: This is to work around b/19059885. Remove after root cause is fixed LOCAL_LDFLAGS_arm := -Wl,--hash-style=sysv diff --git a/libc/arch-arm64/arm64.mk b/libc/arch-arm64/arm64.mk index 470a03838..6a2f31378 100644 --- a/libc/arch-arm64/arm64.mk +++ b/libc/arch-arm64/arm64.mk @@ -40,6 +40,8 @@ libc_bionic_src_files_arm64 += \ arch-arm64/bionic/syscall.S \ arch-arm64/bionic/vfork.S \ +# Work around for http://b/20065774. +libc_bionic_src_files_arm64 += arch-arm64/bionic/libgcc_compat.c libc_crt_target_cflags_arm64 := \ -I$(LOCAL_PATH)/arch-arm64/include diff --git a/libc/arch-arm64/bionic/libgcc_compat.c b/libc/arch-arm64/bionic/libgcc_compat.c new file mode 100644 index 000000000..35158cef6 --- /dev/null +++ b/libc/arch-arm64/bionic/libgcc_compat.c @@ -0,0 +1,11 @@ +/* STOPSHIP: remove this once the flounder blobs have been rebuilt (http://b/20065774). */ + +extern void __clear_cache(char*, char*); +extern char _Unwind_Backtrace; +extern char _Unwind_GetIP; + +void* __bionic_libgcc_compat_symbols[] = { + &__clear_cache, + &_Unwind_Backtrace, + &_Unwind_GetIP, +}; diff --git a/libc/version_script.txt b/libc/version_script.txt index afc5e5c47..349a2fc2c 100644 --- a/libc/version_script.txt +++ b/libc/version_script.txt @@ -1,4 +1,9 @@ LIBC { + global: + /* Work-around for http://b/20065774. */ + __clear_cache; + _Unwind_Backtrace; + _Unwind_GetIP; local: _ZSt7nothrow; _ZdaPv;