Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3117992 authored by Yo Chiang's avatar Yo Chiang Committed by Gerrit Code Review
Browse files

Merge changes from topic "exclude-system-shared-libs-from-elfcheck-suggestions"

* changes:
  Pass the value of system_shared_libs from Android.bp to check_elf_file.py
  Exclude system shared libs from fix suggestion
parents 69c6598b bdd9ec46
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -14,12 +14,14 @@
# - my_installed_module_stem
# - my_prebuilt_src_file
# - my_check_elf_file_shared_lib_files
# - my_system_shared_libraries

ifndef LOCAL_IS_HOST_MODULE
ifneq ($(filter $(LOCAL_MODULE_CLASS),SHARED_LIBRARIES EXECUTABLES NATIVE_TESTS),)
check_elf_files_stamp := $(intermediates)/check_elf_files.timestamp
$(check_elf_files_stamp): PRIVATE_SONAME := $(if $(filter $(LOCAL_MODULE_CLASS),SHARED_LIBRARIES),$(my_installed_module_stem))
$(check_elf_files_stamp): PRIVATE_ALLOW_UNDEFINED_SYMBOLS := $(LOCAL_ALLOW_UNDEFINED_SYMBOLS)
$(check_elf_files_stamp): PRIVATE_SYSTEM_SHARED_LIBRARIES := $(my_system_shared_libraries)
# PRIVATE_SHARED_LIBRARY_FILES are file paths to built shared libraries.
# In addition to $(my_check_elf_file_shared_lib_files), some file paths are
# added by `resolve-shared-libs-for-elf-file-check` from `core/main.mk`.
@@ -33,6 +35,7 @@ $(check_elf_files_stamp): $(my_prebuilt_src_file) $(my_check_elf_file_shared_lib
	    --skip-unknown-elf-machine \
	    $(if $(PRIVATE_SONAME),--soname $(PRIVATE_SONAME)) \
	    $(foreach l,$(PRIVATE_SHARED_LIBRARY_FILES),--shared-lib $(l)) \
	    $(foreach l,$(PRIVATE_SYSTEM_SHARED_LIBRARIES),--system-shared-lib $(l)) \
	    $(if $(PRIVATE_ALLOW_UNDEFINED_SYMBOLS),--allow-undefined-symbols) \
	    --llvm-readobj=$(LLVM_READOBJ) \
	    $<
+1 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ endif
ifdef LOCAL_INSTALLED_MODULE
  ifneq ($(LOCAL_CHECK_ELF_FILES),)
    my_prebuilt_src_file := $(LOCAL_PREBUILT_MODULE_FILE)
    my_system_shared_libraries := $(LOCAL_SYSTEM_SHARED_LIBRARIES)
    include $(BUILD_SYSTEM)/check_elf_file.mk
  endif
endif
+12 −2
Original line number Diff line number Diff line
@@ -397,7 +397,7 @@ class Checker(object):
      sys.exit(2)


  def check_dt_needed(self):
  def check_dt_needed(self, system_shared_lib_names):
    """Check whether all DT_NEEDED entries are specified in the build
    system."""

@@ -417,6 +417,11 @@ class Checker(object):
      dt_needed = sorted(set(self._file_under_test.dt_needed))
      modules = [re.sub('\\.so$', '', lib) for lib in dt_needed]

      # Remove system shared libraries from the suggestion since they are added
      # by default.
      modules = [name for name in modules
                 if name not in system_shared_lib_names]

      self._note()
      self._note('Fix suggestions:')
      self._note(
@@ -502,6 +507,11 @@ def _parse_args():
  parser.add_argument('--shared-lib', action='append', default=[],
                      help='Path to shared library dependencies')

  # System Shared library names
  parser.add_argument('--system-shared-lib', action='append', default=[],
                      help='System shared libraries to be hidden from fix '
                      'suggestions')

  # Check options
  parser.add_argument('--skip-bad-elf-magic', action='store_true',
                      help='Ignore the input file without the ELF magic word')
@@ -535,7 +545,7 @@ def main():
  if args.soname:
    checker.check_dt_soname(args.soname)

  checker.check_dt_needed()
  checker.check_dt_needed(args.system_shared_lib)

  if not args.allow_undefined_symbols:
    checker.check_symbols()