Exclude system shared libs from fix suggestion am: 751a987bcc am: 8abf06faa4 am: f4dd14c323 am: 40d57c3be7

Original change: https://android-review.googlesource.com/c/platform/build/+/1190333

Change-Id: Ie8c60f36b1e576c26dba18c050f82ca167225e16
This commit is contained in:
Logan Chien 2020-09-28 05:35:14 +00:00 committed by Automerger Merge Worker
commit 1bba990bb8
2 changed files with 15 additions and 2 deletions

View file

@ -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) \
$<

View file

@ -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()