Bug 1442468 - Remove workaround for http://code.google.com/p/android/issues/detail?id=23203. r?froydnj
That NDK bug has been fixed since r8c, and we now require something more
recent than that. This effectively reverts the changes from
bug 720621
and
bug 734832.
--- a/memory/replace/logalloc/LogAlloc.cpp
+++ b/memory/replace/logalloc/LogAlloc.cpp
@@ -51,19 +51,16 @@ GetTid()
#if defined(_WIN32)
return size_t(GetCurrentThreadId());
#else
return size_t(pthread_self());
#endif
}
#ifdef ANDROID
-/* See mozglue/android/APKOpen.cpp */
-extern "C" MOZ_EXPORT __attribute__((weak)) void* __dso_handle;
-
/* Android doesn't have pthread_atfork defined in pthread.h */
extern "C" MOZ_EXPORT int
pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
#endif
class LogAllocBridge : public ReplaceMallocBridge
{
virtual void InitDebugFd(mozilla::DebugFdRegistry& aRegistry) override
--- a/mozglue/android/APKOpen.cpp
+++ b/mozglue/android/APKOpen.cpp
@@ -54,32 +54,16 @@
* is loaded.
*/
__attribute__((constructor))
void make_dumpable() {
prctl(PR_SET_DUMPABLE, 1);
}
#endif
-extern "C" {
-/*
- * To work around http://code.google.com/p/android/issues/detail?id=23203
- * we don't link with the crt objects. In some configurations, this means
- * a lack of the __dso_handle symbol because it is defined there, and
- * depending on the android platform and ndk versions used, it may or may
- * not be defined in libc.so. In the latter case, we fail to link. Defining
- * it here as weak makes us provide the symbol when it's not provided by
- * the crt objects, making the change transparent for future NDKs that
- * would fix the original problem. On older NDKs, it is not a problem
- * either because the way __dso_handle was used was already broken (and
- * the custom linker works around it).
- */
- APKOPEN_EXPORT __attribute__((weak)) void *__dso_handle;
-}
-
typedef int mozglueresult;
enum StartupEvent {
#define mozilla_StartupTimeline_Event(ev, z) ev,
#include "StartupTimeline.h"
#undef mozilla_StartupTimeline_Event
MAX_STARTUP_EVENT_ID
};
--- a/old-configure.in
+++ b/old-configure.in
@@ -1649,52 +1649,16 @@ if test -n "$MOZ_LINKER"; then
dnl gold emits wrong sysv-style elf hash tables when building both sysv and
dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
dnl Since the linker only understands the sysv ones, no need to build the
dnl gnu style tables anyways.
LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
fi
-dnl The custom linker doesn't support text relocations, but NDK >= r6b
-dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
-dnl We however want to avoid these text relocations, and this can be done
-dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
-dnl doesn't contain anything at all, beside placeholders for some sections,
-dnl and crtbegin only contains a finalizer function that calls
-dnl __cxa_finalize. The custom linker actually takes care of calling
-dnl __cxa_finalize when the library doesn't call it itself, which makes it
-dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
-dnl link crtbegin and crtend at all.
-if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
- AC_CACHE_CHECK([whether the CRT objects have text relocations],
- ac_cv_crt_has_text_relocations,
- [echo 'int foo() { return 0; }' > conftest.cpp
- if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
- test -s conftest${DLL_SUFFIX}; then
- if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
- ac_cv_crt_has_text_relocations=yes
- else
- ac_cv_crt_has_text_relocations=no
- fi
- else
- AC_ERROR([couldn't compile a simple C file])
- fi
- rm -rf conftest*])
- if test "$ac_cv_crt_has_text_relocations" = yes; then
- dnl While we want libraries to skip the CRT files, we don't want
- dnl executables to be treated the same way. We thus set the flag
- dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
- dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
- dnl Using LDFLAGS in nspr is safe, since we only really build
- dnl libraries there.
- DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
- fi
-fi
-
dnl End of C++ language/feature checks
AC_LANG_C
dnl ========================================================
dnl = Internationalization checks
dnl ========================================================
dnl
dnl Internationalization and Locale support is different