From f0980aad5dc596f7ce748637eef150616f7ed24a Mon Sep 17 00:00:00 2001 From: LuK1337 Date: Thu, 7 Nov 2024 21:21:31 +0100 Subject: [PATCH] lemonadep: Unpin QTI camera postproc Change-Id: I376cfa8b0ab91814a0b602d68e333164ff90c891 --- extract-files.py | 48 ++++++++++++++++++++++++++++++++++++++++++- proprietary-files.txt | 2 +- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/extract-files.py b/extract-files.py index 790a939..4e520b4 100755 --- a/extract-files.py +++ b/extract-files.py @@ -5,6 +5,8 @@ # from extract_utils.fixups_blob import ( + BlobFixupCtx, + File, blob_fixup, blob_fixups_user_type, ) @@ -15,6 +17,12 @@ from extract_utils.main import ( ExtractUtils, ExtractUtilsModule, ) +from extract_utils.tools import ( + llvm_objdump_path, +) +from extract_utils.utils import ( + run_cmd, +) namespace_imports = [ 'hardware/oplus', @@ -22,6 +30,44 @@ namespace_imports = [ 'vendor/qcom/opensource/display', ] + +def blob_fixup_nop_call( + ctx: BlobFixupCtx, + file: File, + file_path: str, + call_instruction: str, + disassemble_symbol: str, + symbol: str, + *args, + **kwargs, +): + for line in run_cmd( + [ + llvm_objdump_path, + f'--disassemble-symbols={disassemble_symbol}', + file_path, + ] + ).splitlines(): + line = line.split(maxsplit=3) + + if len(line) != 4: + continue + + offset, _, instruction, args = line + + if instruction != call_instruction: + continue + + if not args.endswith(f' <{symbol}>'): + continue + + with open(file_path, 'rb+') as f: + f.seek(int(offset[:-1], 16)) + f.write(b'\x1f\x20\x03\xd5') # AArch64 NOP + + break + + blob_fixups: blob_fixups_user_type = { 'odm/etc/camera/CameraHWConfiguration.config': blob_fixup() .regex_replace('SystemCamera = 0; 0; 1; 1; 1; 1', 'SystemCamera = 0; 0; 0; 0; 0; 1'), @@ -41,7 +87,7 @@ blob_fixups: blob_fixups_user_type = { 'vendor/lib/libextcamera_client.so': blob_fixup() .replace_needed('libgui1_vendor.so', 'libgui_vendor.so'), 'vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so': blob_fixup() - .sig_replace('27 0B 00 94', '1F 20 03 D5'), + .call(blob_fixup_nop_call, 'bl', '__cfi_check', '_ZN7android8hardware22configureRpcThreadpoolEmb@plt'), } # fmt: skip module = ExtractUtilsModule( diff --git a/proprietary-files.txt b/proprietary-files.txt index 86d3b8a..bbcc0a0 100644 --- a/proprietary-files.txt +++ b/proprietary-files.txt @@ -856,7 +856,7 @@ vendor/lib64/vendor.oplus.hardware.cameraextension-V1-ndk_platform.so vendor/lib64/vendor.oplus.hardware.cammidasservice@1.0.so vendor/lib64/vendor.oplus.hardware.osense.client-V1-ndk_platform.so vendor/lib64/vendor.oplus.hardware.sendextcamcmd-V1-ndk_platform.so -vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so|38ff048bb7f0a372e0d6ae88144bef2c01b8d10f|b08ed1ebb4298f9c9629ead4c8e088d7d543bc18 +vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so # Camera firmware vendor/firmware/CAMERA_ICP.elf