gecko-dev/mozglue/build/BionicGlue.cpp
Mike Hommey 777665d869 Bug 1545007 - Remove our pthread_atfork implementation for Android. r=froydnj
Bug 884239 added a build-time Android version check around the
pthread_atfork function definition at the same time as for timer_create,
which was subsequently removed. But it turns out the version that
documented was wrong: per the comment added in bug 680190,
pthread_atfork might have been supported since Android 2.3 (gingerbread,
API 9 or 10). That might not be entirely accurate, though, because the
bionic repository seems to show it made it to Android 4.0 (ice cream
sandwich, API 14 or 15).

Either way, that is less than the minimum API version we currently
support, which is 16.

Differential Revision: https://phabricator.services.mozilla.com/D27848

--HG--
extra : moz-landing-system : lando
2019-04-17 18:26:02 +00:00

38 lines
1.4 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include <sys/types.h>
#include <unistd.h>
#include <sys/syscall.h>
#define NS_EXPORT __attribute__((visibility("default")))
extern "C" NS_EXPORT int raise(int sig) {
// Bug 741272: Bionic incorrectly uses kill(), which signals the
// process, and thus could signal another thread (and let this one
// return "successfully" from raising a fatal signal).
//
// Bug 943170: POSIX specifies pthread_kill(pthread_self(), sig) as
// equivalent to raise(sig), but Bionic also has a bug with these
// functions, where a forked child will kill its parent instead.
extern pid_t gettid(void);
return syscall(__NR_tgkill, getpid(), gettid(), sig);
}
/* Flash plugin uses symbols that are not present in Android >= 4.4 */
namespace android {
namespace VectorImpl {
NS_EXPORT void reservedVectorImpl1(void) {}
NS_EXPORT void reservedVectorImpl2(void) {}
NS_EXPORT void reservedVectorImpl3(void) {}
NS_EXPORT void reservedVectorImpl4(void) {}
NS_EXPORT void reservedVectorImpl5(void) {}
NS_EXPORT void reservedVectorImpl6(void) {}
NS_EXPORT void reservedVectorImpl7(void) {}
NS_EXPORT void reservedVectorImpl8(void) {}
} // namespace VectorImpl
} // namespace android