Loading core/check_elf_file.mk +3 −0 Original line number Diff line number Diff line Loading @@ -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`. Loading @@ -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) \ $< Loading tools/check_elf_file.py +12 −2 Original line number Diff line number Diff line Loading @@ -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.""" Loading @@ -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( Loading Loading @@ -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') Loading Loading @@ -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() Loading Loading
core/check_elf_file.mk +3 −0 Original line number Diff line number Diff line Loading @@ -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`. Loading @@ -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) \ $< Loading
tools/check_elf_file.py +12 −2 Original line number Diff line number Diff line Loading @@ -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.""" Loading @@ -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( Loading Loading @@ -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') Loading Loading @@ -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() Loading