def process_binary()

in scripts/elf_rockylinux_dependency_analyzer.py [0:0]


def process_binary(binary_path):
    print(f"Binary: {binary_path}\n")
    print("Libraries and their corresponding packages:")
    packages, special_cases, missing_libraries = [], [], []
    known_special_cases = ['linux-vdso.so.1', 'ld-linux-x86-64.so.2']
    ldd_output = run_command(['ldd', binary_path])
    if ldd_output is None:
        return packages, special_cases, missing_libraries
    for line in ldd_output.splitlines():
        if any(special in line for special in known_special_cases):
            continue
        parts = line.split('=>')
        lib_name = parts[0].strip()
        if "not found" in line:
            missing_libraries.append(lib_name)
            print(f"MISSING: {line.strip()}")
        else:
            if len(parts) > 1:
                lib_path = parts[1].split()[0]
                if lib_path != "not":
                    package_info = get_package_info(lib_path)
                    if package_info:
                        print(f"{lib_path} => {package_info[1]}")
                        packages.append(package_info)
                    else:
                        if os.path.exists(lib_path):
                            special_case = f"{lib_path} is a custom or non-RPM library"
                            special_cases.append(special_case)
                            print(f"{lib_path} => Custom or non-RPM library")
                        else:
                            special_case = f"{lib_path} is not found and might be a special case"
                            special_cases.append(special_case)
                            print(f"{lib_path} => Not found, might be a special case")
                else:
                    special_case = f"{line.strip()} is a special case or built-in library"
                    special_cases.append(special_case)
                    print(f"{line.strip()} => Special case or built-in library")
            else:
                special_case = f"{line.strip()} is a special case or built-in library"
                special_cases.append(special_case)
                print(f"{line.strip()} => Special case or built-in library")
    if special_cases:
        print(f"Special cases found for {binary_path}:")
        for case in special_cases:
            print(f"  - {case}")
    else:
        print(f"No special cases found for {binary_path}")
    print_summary(packages, special_cases, missing_libraries, binary_path)
    print("-------------------------------------------")
    return packages, special_cases, missing_libraries