未验证 提交 db5ff62f 编写于 作者: O openharmony_ci 提交者: Gitee

!274 fix asan build and typo

Merge pull request !274 from stesen/master
......@@ -40,7 +40,7 @@ static struct MallocDispatchType __ohos_malloc_hook_init_dispatch = {
static char *__malloc_hook_shared_lib = "libnative_hook.z.so";
static char *__malloc_hook_function_prefix = "ohos_malloc_hook";
static char *__get_param_shared_Lib = "libparam_client.z.so";
volatile atomic_llong ohos_malloc_hook_shared_liibrary;
volatile atomic_llong ohos_malloc_hook_shared_library;
void* function_of_shared_lib[LAST_FUNCTION];
static enum EnumHookMode __hook_mode = STEP_HOOK_MODE;
static char __hook_process_path[PATH_MAX+ 1] = {0};
......@@ -63,11 +63,11 @@ static char* get_native_hook_param()
}
const char *key = MUSL_HOOK_PARAM_NAME;
char *value = (char *)malloc(OHOS_PARAM_MAX_SIZE);
memset(value, 0, OHOS_PARAM_MAX_SIZE);
if (value == NULL) {
dlclose(shared_library_handle);
return NULL;
}
memset(value, 0, OHOS_PARAM_MAX_SIZE);
unsigned int len = OHOS_PARAM_MAX_SIZE;
getFunction(key, value, &len);
dlclose(shared_library_handle);
......@@ -270,7 +270,7 @@ static bool is_empty_string(const char* str)
static void install_ohos_malloc_hook(struct musl_libc_globals* globals)
{
volatile void* shared_library_handle = (volatile void *)atomic_load_explicit(&ohos_malloc_hook_shared_liibrary, memory_order_acquire);
volatile void* shared_library_handle = (volatile void *)atomic_load_explicit(&ohos_malloc_hook_shared_library, memory_order_acquire);
assert(shared_library_handle == NULL || shared_library_handle == (volatile void*)-1);
shared_library_handle = (volatile void*)load_malloc_hook_shared_library(__malloc_hook_shared_lib, __malloc_hook_function_prefix, &globals->malloc_dispatch_table);
if (shared_library_handle == NULL) {
......@@ -279,11 +279,11 @@ static void install_ohos_malloc_hook(struct musl_libc_globals* globals)
}
if (finish_install_ohos_malloc_hooks(globals, NULL, __malloc_hook_function_prefix)) {
atomic_store_explicit(&ohos_malloc_hook_shared_liibrary, (volatile long long)shared_library_handle, memory_order_seq_cst);
atomic_store_explicit(&ohos_malloc_hook_shared_library, (volatile long long)shared_library_handle, memory_order_seq_cst);
} else {
// __musl_log(__MUSL_LOG_ERROR, "finish_install_ohos_malloc_hooks failed\n");
dlclose((void *)shared_library_handle);
atomic_store_explicit(&ohos_malloc_hook_shared_liibrary, (volatile long long)0, memory_order_seq_cst);
atomic_store_explicit(&ohos_malloc_hook_shared_library, (volatile long long)0, memory_order_seq_cst);
}
}
......@@ -319,11 +319,11 @@ static void __install_malloc_hook()
{
atomic_store_explicit(&__hook_enable_hook_flag, (volatile bool)true, memory_order_seq_cst);
volatile void* shared_library_handle = (volatile void* )atomic_load_explicit(&ohos_malloc_hook_shared_liibrary, memory_order_acquire);
volatile void* shared_library_handle = (volatile void* )atomic_load_explicit(&ohos_malloc_hook_shared_library, memory_order_acquire);
if (shared_library_handle == NULL) {
if (__hook_mode == STEP_HOOK_MODE) {
atomic_store_explicit(&__musl_libc_globals.current_dispatch_table, (volatile const long long)&__ohos_malloc_hook_init_dispatch, memory_order_seq_cst);
atomic_store_explicit(&ohos_malloc_hook_shared_liibrary, (volatile long long)-1, memory_order_seq_cst);
atomic_store_explicit(&ohos_malloc_hook_shared_library, (volatile long long)-1, memory_order_seq_cst);
} else {
init_ohos_malloc_hook();
}
......
......@@ -27,8 +27,10 @@ enum EnumHookMode {
STEP_HOOK_MODE,
};
#ifdef HOOK_ENABLE
extern void* function_of_shared_lib[];
extern volatile atomic_llong ohos_malloc_hook_shared_liibrary;
extern volatile atomic_llong ohos_malloc_hook_shared_library;
#endif // HOOK_ENABLE
#ifdef __cplusplus
extern "C" {
......@@ -37,14 +39,19 @@ extern "C" {
__attribute__((always_inline))
inline bool __get_global_hook_flag()
{
#ifdef HOOK_ENABLE
volatile bool g_flag = atomic_load_explicit(&__hook_enable_hook_flag, memory_order_acquire);
return g_flag;
#else
return false;
#endif // HOOK_ENABLE
}
__attribute__((always_inline))
inline bool __get_hook_flag()
{
volatile void* impl_handle = (void *)atomic_load_explicit(&ohos_malloc_hook_shared_liibrary, memory_order_acquire);
#ifdef HOOK_ENABLE
volatile void* impl_handle = (void *)atomic_load_explicit(&ohos_malloc_hook_shared_library, memory_order_acquire);
if (impl_handle == NULL) {
return false;
}
......@@ -56,12 +63,16 @@ inline bool __get_hook_flag()
bool flag = get_hook_func_ptr();
return flag;
}
#else
return false;
#endif // HOOK_ENABLE
}
__attribute__((always_inline))
inline bool __set_hook_flag(bool flag)
{
volatile void* impl_handle = (void *)atomic_load_explicit(&ohos_malloc_hook_shared_liibrary, memory_order_acquire);
#ifdef HOOK_ENABLE
volatile void* impl_handle = (void *)atomic_load_explicit(&ohos_malloc_hook_shared_library, memory_order_acquire);
if (impl_handle == NULL) {
return false;
}
......@@ -72,11 +83,15 @@ inline bool __set_hook_flag(bool flag)
SetHookFlagType set_hook_func_ptr = (SetHookFlagType)(function_of_shared_lib[SET_HOOK_FLAG_FUNCTION]);
return set_hook_func_ptr(flag);
}
#else
return false;
#endif // HOOK_ENABLE
}
__attribute__((always_inline))
inline volatile const struct MallocDispatchType* get_current_dispatch_table()
{
#ifdef HOOK_ENABLE
volatile const struct MallocDispatchType* ret = (struct MallocDispatchType *)atomic_load_explicit(&__musl_libc_globals.current_dispatch_table, memory_order_acquire);
if (ret != NULL) {
if (!__get_global_hook_flag()) {
......@@ -87,6 +102,9 @@ inline volatile const struct MallocDispatchType* get_current_dispatch_table()
}
}
return ret;
#else
return NULL;
#endif // HOOK_ENABLE
}
#define MUSL_HOOK_PARAM_NAME "libc.hook_mode"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册