(binary_path)
| 184 | print("\nSPECIAL CASES: None found") |
| 185 | |
| 186 | def process_binary(binary_path): |
| 187 | print(f"Binary: {binary_path}\n") |
| 188 | print("Libraries and their corresponding packages:") |
| 189 | packages, special_cases, missing_libraries = [], [], [] |
| 190 | known_special_cases = ['linux-vdso.so.1', 'ld-linux-x86-64.so.2'] |
| 191 | ldd_output = run_command(['ldd', binary_path]) |
| 192 | if ldd_output is None: |
| 193 | return packages, special_cases, missing_libraries |
| 194 | for line in ldd_output.splitlines(): |
| 195 | if any(special in line for special in known_special_cases): |
| 196 | continue |
| 197 | parts = line.split('=>') |
| 198 | lib_name = parts[0].strip() |
| 199 | if "not found" in line: |
| 200 | missing_libraries.append(lib_name) |
| 201 | print(f"MISSING: {line.strip()}") |
| 202 | else: |
| 203 | if len(parts) > 1: |
| 204 | lib_path = parts[1].split()[0] |
| 205 | if lib_path != "not": |
| 206 | package_info = get_package_info(lib_path) |
| 207 | if package_info: |
| 208 | print(f"{lib_path} => {package_info[1]}") |
| 209 | packages.append(package_info) |
| 210 | else: |
| 211 | if os.path.exists(lib_path): |
| 212 | special_case = f"{lib_path} is a custom or non-RPM library" |
| 213 | special_cases.append(special_case) |
| 214 | print(f"{lib_path} => Custom or non-RPM library") |
| 215 | else: |
| 216 | special_case = f"{lib_path} is not found and might be a special case" |
| 217 | special_cases.append(special_case) |
| 218 | print(f"{lib_path} => Not found, might be a special case") |
| 219 | else: |
| 220 | special_case = f"{line.strip()} is a special case or built-in library" |
| 221 | special_cases.append(special_case) |
| 222 | print(f"{line.strip()} => Special case or built-in library") |
| 223 | else: |
| 224 | special_case = f"{line.strip()} is a special case or built-in library" |
| 225 | special_cases.append(special_case) |
| 226 | print(f"{line.strip()} => Special case or built-in library") |
| 227 | if special_cases: |
| 228 | print(f"Special cases found for {binary_path}:") |
| 229 | for case in special_cases: |
| 230 | print(f" - {case}") |
| 231 | else: |
| 232 | print(f"No special cases found for {binary_path}") |
| 233 | print_summary(packages, special_cases, missing_libraries, binary_path) |
| 234 | print("-------------------------------------------") |
| 235 | return packages, special_cases, missing_libraries |
| 236 | |
| 237 | def is_elf_binary(file_path): |
| 238 | file_output = run_command(['file', file_path]) |
no test coverage detected