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