am ec544e1b: Merge "Build our benchmarks against glibc too."

* commit 'ec544e1b35cadaefd833b441dbec9c44adff6ade':
  Build our benchmarks against glibc too.
This commit is contained in:
Elliott Hughes 2014-12-02 01:03:34 +00:00 committed by Android Git Automerger
commit 4f16aa9aec
8 changed files with 41 additions and 11 deletions

@ -32,7 +32,6 @@ benchmark_c_flags = \
benchmark_src_files = \ benchmark_src_files = \
benchmark_main.cpp \ benchmark_main.cpp \
math_benchmark.cpp \ math_benchmark.cpp \
property_benchmark.cpp \
pthread_benchmark.cpp \ pthread_benchmark.cpp \
semaphore_benchmark.cpp \ semaphore_benchmark.cpp \
stdio_benchmark.cpp \ stdio_benchmark.cpp \
@ -41,7 +40,8 @@ benchmark_src_files = \
unistd_benchmark.cpp \ unistd_benchmark.cpp \
# Build benchmarks for the device (with bionic's .so). Run with: # Build benchmarks for the device (with bionic's .so). Run with:
# adb shell bionic-benchmarks # adb shell bionic-benchmarks32
# adb shell bionic-benchmarks64
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := bionic-benchmarks LOCAL_MODULE := bionic-benchmarks
LOCAL_MODULE_STEM_32 := bionic-benchmarks32 LOCAL_MODULE_STEM_32 := bionic-benchmarks32
@ -49,10 +49,29 @@ LOCAL_MODULE_STEM_64 := bionic-benchmarks64
LOCAL_MULTILIB := both LOCAL_MULTILIB := both
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_CFLAGS += $(benchmark_c_flags) LOCAL_CFLAGS += $(benchmark_c_flags)
LOCAL_SRC_FILES := $(benchmark_src_files) LOCAL_SRC_FILES := $(benchmark_src_files) property_benchmark.cpp
LOCAL_CXX_STL := libc++ LOCAL_CXX_STL := libc++
include $(BUILD_EXECUTABLE) include $(BUILD_EXECUTABLE)
# We don't build a static benchmark executable because it's not usually
# useful. If you're trying to run the current benchmarks on an older
# release, it's (so far at least) always because you want to measure the
# performance of the old release's libc, and a static benchmark isn't
# going to let you do that.
# Build benchmarks for the host (against glibc!). Run with:
include $(CLEAR_VARS)
LOCAL_MODULE := bionic-benchmarks-glibc
LOCAL_MODULE_STEM_32 := bionic-benchmarks-glibc32
LOCAL_MODULE_STEM_64 := bionic-benchmarks-glibc64
LOCAL_MULTILIB := both
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_CFLAGS += $(benchmark_c_flags)
LOCAL_LDFLAGS += -lrt
LOCAL_SRC_FILES := $(benchmark_src_files)
LOCAL_CXX_STL := libc++
include $(BUILD_HOST_EXECUTABLE)
ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64)) ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
ifeq ($(TARGET_ARCH),x86) ifeq ($(TARGET_ARCH),x86)
LINKER = linker LINKER = linker

@ -19,6 +19,7 @@
#include <regex.h> #include <regex.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h>
#include <string> #include <string>
#include <map> #include <map>

@ -80,7 +80,7 @@ BENCHMARK(BM_pthread_mutex_lock);
static void BM_pthread_mutex_lock_ERRORCHECK(int iters) { static void BM_pthread_mutex_lock_ERRORCHECK(int iters) {
StopBenchmarkTiming(); StopBenchmarkTiming();
pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER; pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
StartBenchmarkTiming(); StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) { for (int i = 0; i < iters; ++i) {
@ -94,7 +94,7 @@ BENCHMARK(BM_pthread_mutex_lock_ERRORCHECK);
static void BM_pthread_mutex_lock_RECURSIVE(int iters) { static void BM_pthread_mutex_lock_RECURSIVE(int iters) {
StopBenchmarkTiming(); StopBenchmarkTiming();
pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
StartBenchmarkTiming(); StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) { for (int i = 0; i < iters; ++i) {

@ -16,7 +16,9 @@
#include "benchmark.h" #include "benchmark.h"
#include <unistd.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <sys/time.h>
#include <time.h> #include <time.h>
static void BM_time_clock_gettime(int iters) { static void BM_time_clock_gettime(int iters) {

@ -41,6 +41,8 @@ static void BM_unistd_getpid_syscall(int iters) {
} }
BENCHMARK(BM_unistd_getpid_syscall); BENCHMARK(BM_unistd_getpid_syscall);
#if defined(__BIONIC__)
// Stop GCC optimizing out our pure function. // Stop GCC optimizing out our pure function.
/* Must not be static! */ pid_t (*gettid_fp)() = gettid; /* Must not be static! */ pid_t (*gettid_fp)() = gettid;
@ -55,6 +57,8 @@ static void BM_unistd_gettid(int iters) {
} }
BENCHMARK(BM_unistd_gettid); BENCHMARK(BM_unistd_gettid);
#endif
static void BM_unistd_gettid_syscall(int iters) { static void BM_unistd_gettid_syscall(int iters) {
StartBenchmarkTiming(); StartBenchmarkTiming();

@ -44,7 +44,7 @@ struct atfork_list_t {
atfork_t* last; atfork_t* last;
}; };
static pthread_mutex_t g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; static pthread_mutex_t g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
static atfork_list_t g_atfork_list = { NULL, NULL }; static atfork_list_t g_atfork_list = { NULL, NULL };
void __bionic_atfork_run_prepare() { void __bionic_atfork_run_prepare() {
@ -73,7 +73,7 @@ void __bionic_atfork_run_child() {
} }
} }
g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
} }
void __bionic_atfork_run_parent() { void __bionic_atfork_run_parent() {

@ -53,9 +53,13 @@ typedef struct {
#define __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE 0x4000 #define __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE 0x4000
#define __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000 #define __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
#define PTHREAD_MUTEX_INITIALIZER {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER} #define PTHREAD_MUTEX_INITIALIZER {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER} #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER} #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
/* TODO: remove this namespace pollution. */
#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
enum { enum {
PTHREAD_MUTEX_NORMAL = 0, PTHREAD_MUTEX_NORMAL = 0,

@ -29,7 +29,7 @@
/* This file hijacks the symbols stubbed out in libdl.so. */ /* This file hijacks the symbols stubbed out in libdl.so. */
static pthread_mutex_t g_dl_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; static pthread_mutex_t g_dl_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
static const char* __bionic_set_dlerror(char* new_value) { static const char* __bionic_set_dlerror(char* new_value) {
char** dlerror_slot = &reinterpret_cast<char**>(__get_tls())[TLS_SLOT_DLERROR]; char** dlerror_slot = &reinterpret_cast<char**>(__get_tls())[TLS_SLOT_DLERROR];