resolved conflicts for merge of f4cb6313 to lmp-mr1-dev-plus-aosp
Change-Id: I9c033fa82c7bf07e06157227f5162d603804b7d6
This commit is contained in:
@@ -1689,8 +1689,6 @@ void soinfo::CallConstructors() {
|
|||||||
// DT_INIT should be called before DT_INIT_ARRAY if both are present.
|
// DT_INIT should be called before DT_INIT_ARRAY if both are present.
|
||||||
CallFunction("DT_INIT", init_func);
|
CallFunction("DT_INIT", init_func);
|
||||||
CallArray("DT_INIT_ARRAY", init_array, init_array_count, false);
|
CallArray("DT_INIT_ARRAY", init_array, init_array_count, false);
|
||||||
|
|
||||||
resolve_ifunc_symbols();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void soinfo::CallDestructors() {
|
void soinfo::CallDestructors() {
|
||||||
@@ -1752,12 +1750,6 @@ void soinfo::set_st_ino(ino_t ino) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void soinfo::set_has_ifuncs(bool ifuncs) {
|
|
||||||
if (has_min_version(1)) {
|
|
||||||
has_ifuncs = ifuncs;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dev_t soinfo::get_st_dev() {
|
dev_t soinfo::get_st_dev() {
|
||||||
if (has_min_version(0)) {
|
if (has_min_version(0)) {
|
||||||
return st_dev;
|
return st_dev;
|
||||||
@@ -2195,18 +2187,6 @@ bool soinfo::LinkImage(const android_dlextinfo* extinfo) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// if there are ifuncs, we need to do an additional relocation pass.
|
|
||||||
// they cannot be resolved until the rest of the relocations are done
|
|
||||||
// because we need to call the resolution function which may be waiting
|
|
||||||
// on relocations.
|
|
||||||
if(get_has_ifuncs()) {
|
|
||||||
#if defined(__i386__)
|
|
||||||
soinfo_ifunc_relocate(this, plt_rel, plt_rel_count);
|
|
||||||
#elif defined(__x86_64__)
|
|
||||||
soinfo_ifunc_relocate(this, plt_rela, plt_rela_count);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(__mips__)
|
#if defined(__mips__)
|
||||||
if (!mips_relocate_got(this)) {
|
if (!mips_relocate_got(this)) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -214,10 +214,8 @@ struct soinfo {
|
|||||||
|
|
||||||
void set_st_dev(dev_t st_dev);
|
void set_st_dev(dev_t st_dev);
|
||||||
void set_st_ino(ino_t st_ino);
|
void set_st_ino(ino_t st_ino);
|
||||||
void set_has_ifuncs(bool ifunc);
|
|
||||||
ino_t get_st_ino();
|
ino_t get_st_ino();
|
||||||
dev_t get_st_dev();
|
dev_t get_st_dev();
|
||||||
bool get_has_ifuncs();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ endif
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Library used by ifunc tests
|
# Library used by ifunc tests
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
|
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm64 x86 x86_64))
|
||||||
libtest_ifunc_src_files := \
|
libtest_ifunc_src_files := \
|
||||||
dlopen_testlib_ifunc.c
|
dlopen_testlib_ifunc.c
|
||||||
|
|
||||||
@@ -478,6 +478,14 @@ ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
|
|||||||
module := libtest_ifunc
|
module := libtest_ifunc
|
||||||
build_type := target
|
build_type := target
|
||||||
build_target := SHARED_LIBRARY
|
build_target := SHARED_LIBRARY
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),arm64)
|
||||||
|
libtest_ifunc_multilib := 64
|
||||||
|
# TODO: This is a workaround - remove it once gcc
|
||||||
|
# removes its Android ifunc checks
|
||||||
|
libtest_ifunc_cflags := -mglibc
|
||||||
|
endif
|
||||||
|
|
||||||
include $(TEST_PATH)/Android.build.mk
|
include $(TEST_PATH)/Android.build.mk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user