worawit / blutter

Flutter Mobile Application Reverse Engineering Tool
MIT License
760 stars 128 forks source link

vm/tagged_pointer.h: No such file or directory #27

Closed AbhiTheModder closed 6 months ago

AbhiTheModder commented 6 months ago

I've tried commenting tagged_pointer.h also but got no success.

Environment: OS: Ubuntu(20.04)[GH Workspaces, Termux] GCC/CLANG version

ERROR:

/usr/bin/c++ -DDART_COMPRESSED_POINTERS -DDART_PRECOMPILED_RUNTIME -DDART_TARGET_OS_ANDROID -DDART_TARGET_OS_WINDOWS_UWP -DEXCLUDE_CFE_AND_KERNEL_PLATFORM -DFRIDA_TEMPLATE_DIR=\"/workspaces/blutter/scripts\" -DHAS_SHARED_CLASS_TABLE -DHAS_TYPE_REF -DNDEBUG -DPRODUCT -DTARGET_ARCH_ARM64 -DU_USING_ICU_NAMESPACE=0 -D_HAS_EXCEPTIONS=0 -I/usr/include/capstone -isystem /workspaces/blutter/packages/include/dartvm2.8.2 -O3 -DNDEBUG -std=c++2a -O3 -fno-rtti -fvisibility=hidden -fvisibility-inlines-hidden -fno-omit-frame-pointer -Winvalid-pch -x c++-header -include /workspaces/blutter/build/blutter_dartvm2.8.2_android_arm64/CMakeFiles/blutter_dartvm2.8.2_android_arm64.dir/cmake_pch.hxx -MD -MT CMakeFiles/blutter_dartvm2.8.2_android_arm64.dir/cmake_pch.hxx.gch -MF CMakeFiles/blutter_dartvm2.8.2_android_arm64.dir/cmake_pch.hxx.gch.d -o CMakeFiles/blutter_dartvm2.8.2_android_arm64.dir/cmake_pch.hxx.gch -c /workspaces/blutter/build/blutter_dartvm2.8.2_android_arm64/CMakeFiles/blutter_dartvm2.8.2_android_arm64.dir/cmake_pch.hxx.cxx
In file included from /workspaces/blutter/build/blutter_dartvm2.8.2_android_arm64/CMakeFiles/blutter_dartvm2.8.2_android_arm64.dir/cmake_pch.hxx:5,
                 from <command-line>:
/workspaces/blutter/blutter/src/pch.h:35:10: fatal error: vm/tagged_pointer.h: No such file or directory
   35 | #include <vm/tagged_pointer.h>
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "/workspaces/blutter/blutter.py", line 138, in <module>
    main(args.indir, args.outdir, args.rebuild, args.vs_sln)
  File "/workspaces/blutter/blutter.py", line 120, in main
    cmake_blutter(blutter_name, dartlib_name, macros)
  File "/workspaces/blutter/blutter.py", line 76, in cmake_blutter
    subprocess.run([NINJA_CMD], cwd=builddir, check=True)
  File "/home/codespace/.python/current/lib/python3.10/subprocess.py", line 526, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ninja']' returned non-zero exit status 1.
worawit commented 6 months ago

Sorry. Dart 2.8 is too old for this project. I have no plan to support it.

AbhiTheModder commented 6 months ago

Sorry. Dart 2.8 is too old for this project. I have no plan to support it.

No probs... Thanks for pointing it out and your time on it :)

QAQQL commented 5 months ago

Dart 2.10.5 is the same? AILED: CMakeFiles/blutter_dartvm2.10.5_android_arm64.dir/src/CodeAnalyzer_arm64.cpp.o /usr/bin/c++ -DDART_COMPRESSED_POINTERS -DDART_PRECOMPILED_RUNTIME -DDART_TARGET_OS_ANDROID -DDART_TARGET_OS_WINDOWS_UWP -DEXCLUDE_CFE_AND_KERNEL_PLATFORM -DFRIDA_TEMPLATE_DIR=\"/home/ql/桌面/blutter/scripts\" -DHAS_SHARED_CLASS_TABLE -DHAS_TYPE_REF -DNDEBUG -DPRODUCT -DTARGET_ARCH_ARM64 -DU_USING_ICU_NAMESPACE=0 -D_HAS_EXCEPTIONS=0 -I/usr/include/capstone -isystem /home/ql/桌面/blutter/packages/include/dartvm2.10.5 -O3 -DNDEBUG -std=c++20 -O3 -fno-rtti -fvisibility=hidden -fvisibility-inlines-hidden -fno-omit-frame-pointer -Winvalid-pch -include /home/ql/桌面/blutter/build/blutter_dartvm2.10.5_android_arm64/CMakeFiles/blutter_dartvm2.10.5_android_arm64.dir/cmake_pch.hxx -MD -MT CMakeFiles/blutter_dartvm2.10.5_android_arm64.dir/src/CodeAnalyzer_arm64.cpp.o -MF CMakeFiles/blutter_dartvm2.10.5_android_arm64.dir/src/CodeAnalyzer_arm64.cpp.o.d -o CMakeFiles/blutter_dartvm2.10.5_android_arm64.dir/src/CodeAnalyzer_arm64.cpp.o -c '/home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp' In file included from /home/ql/桌面/blutter/blutter/src/Disassembler.h:5, from /home/ql/桌面/blutter/blutter/src/CodeAnalyzer.h:2, from /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:2: /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:84:59: error: ‘HEAP_BITS’ is not a member of ‘dart’ 84 | constexpr arm64_reg CSREG_DART_HEAP = ToCapstoneReg(dart::HEAP_BITS); | ^~~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:88:71: error: ‘dart::AllocateObjectABI’ has not been declared 88 | constexpr arm64_reg CSREG_ALLOCATE_OBJ_TYPEARGS = ToCapstoneReg(dart::AllocateObjectABI::kTypeArgumentsReg); | ^~~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:89:75: error: ‘dart::AllocateClosureABI’ has not been declared 89 | constexpr arm64_reg CSREG_ALLOCATE_CLOSURE_FUNCTION = ToCapstoneReg(dart::AllocateClosureABI::kFunctionReg); | ^~~~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:90:74: error: ‘dart::AllocateClosureABI’ has not been declared 90 | constexpr arm64_reg CSREG_ALLOCATE_CLOSURE_CONTEXT = ToCapstoneReg(dart::AllocateClosureABI::kContextReg); | ^~~~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:91:74: error: ‘dart::AllocateClosureABI’ has not been declared 91 | constexpr arm64_reg CSREG_ALLOCATE_CLOSURE_SCRATCH = ToCapstoneReg(dart::AllocateClosureABI::kScratchReg); | ^~~~~~ In file included from /home/ql/桌面/blutter/blutter/src/DartField.h:3, from /home/ql/桌面/blutter/blutter/src/DartClass.h:3, from /home/ql/桌面/blutter/blutter/src/VarValue.h:2, from /home/ql/桌面/blutter/blutter/src/il.h:3, from /home/ql/桌面/blutter/blutter/src/CodeAnalyzer.h:3: /home/ql/桌面/blutter/blutter/src/DartTypes.h:218:37: error: ‘dart::FunctionTypePtr’ has not been declared 218 | DartFunctionType FindOrAdd(dart::FunctionTypePtr fnTypePtr); | ^~~~ /home/ql/桌面/blutter/blutter/src/VarValue.h: In member function ‘int VarArray::ElementSize()’: /home/ql/桌面/blutter/blutter/src/VarValue.h:164:30: error: ‘kCompressedWordSize’ is not a member of ‘dart’ 164 | return dart::kCompressedWordSize; | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/VarValue.h: In member function ‘int VarGrowableArray::ElementSize()’: /home/ql/桌面/blutter/blutter/src/VarValue.h:186:30: error: ‘kCompressedWordSize’ is not a member of ‘dart’ 186 | return dart::kCompressedWordSize; | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/VarValue.h: In constructor ‘VarFunctionType::VarFunctionType(const DartFunctionType&)’: /home/ql/桌面/blutter/blutter/src/VarValue.h:246:83: error: ‘kFunctionTypeCid’ is not a member of ‘dart’; did you mean ‘kFunctionCid’? 246 | explicit VarFunctionType(const DartFunctionType& fnType) : VarValue(dart::kFunctionTypeCid, true), fnType(fnType) {} | ^~~~ | kFunctionCid /home/ql/桌面/blutter/blutter/src/VarValue.h: In constructor ‘VarSentinel::VarSentinel()’: /home/ql/桌面/blutter/blutter/src/VarValue.h:261:49: error: ‘kSentinelCid’ is not a member of ‘dart’ 261 | explicit VarSentinel() : VarValue(dart::kSentinelCid, false) {} | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp: In function ‘VarValue getPoolObject(DartApp&, intptr_t, A64::Register)’: /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:69:67: error: ‘class dart::ClassPtr’ has no member named ‘untag’ 69 | auto dartCls = app.GetClass(field.Owner().untag()->id()); | ^~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:76:68: error: ‘const class dart::Array’ has no member named ‘ptr’ 76 | return new VarArray(dart::Array::Cast(obj).ptr()); | ^~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:80:28: error: ‘kConstMapCid’ is not a member of ‘dart’; did you mean ‘kContextCid’? 80 | case dart::kConstMapCid: | ^~~~ | kContextCid /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:82:28: error: ‘kConstSetCid’ is not a member of ‘dart’; did you mean ‘kContextCid’? 82 | case dart::kConstSetCid: | ^~~~ | kContextCid /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:92:28: error: ‘kTypeParametersCid’ is not a member of ‘dart’; did you mean ‘kTypeParameterCid’? 92 | case dart::kTypeParametersCid: | ^~~~~~ | kTypeParameterCid /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:95:91: error: ‘const class dart::Type’ has no member named ‘ptr’ 95 | return new VarType(app.TypeDb()->FindOrAdd(dart::Type::Cast(obj).ptr())); | ^~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:101:109: error: ‘const class dart::TypeParameter’ has no member named ‘ptr’ 101 | return new VarTypeParameter(app.TypeDb()->FindOrAdd(dart::TypeParameter::Cast(obj).ptr())); | ^~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:102:28: error: ‘kFunctionTypeCid’ is not a member of ‘dart’; did you mean ‘kFunctionCid’? 102 | case dart::kFunctionTypeCid: | ^~~~ | kFunctionCid /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:103:83: error: ‘dart::FunctionType’ has not been declared 103 | return new VarFunctionType(app.TypeDb()->FindOrAdd(dart::FunctionType::Cast(obj).ptr())); | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:105:108: error: ‘const class dart::TypeArguments’ has no member named ‘ptr’ 105 | return new VarTypeArgument(app.TypeDb()->FindOrAdd(dart::TypeArguments::Cast(obj).ptr())); | ^~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:107:28: error: ‘kSentinelCid’ is not a member of ‘dart’ 107 | case dart::kSentinelCid: | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp: In member function ‘ILResult FunctionAnalyzer::processLoadFieldTableInstr(AsmInstruction)’: /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1186:137: error: ‘kSentinelCid’ is not a member of ‘dart’ 1186 | if (objPoolInstr.insCnt == 0 || objPoolInstr.dstReg != A64::TMP_REG || objPoolInstr.item.ValueTypeId() != dart::kSentinelCid) { | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1218:83: error: ‘InitLateStaticFieldStub’ is not a member of ‘DartStub’ 1218 | INSN_ASSERT(stubKind == DartStub::InitLateStaticFieldStub || stubKind == DartStub::InitLateFinalStaticFieldStub); | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1218:132: error: ‘InitLateFinalStaticFieldStub’ is not a member of ‘DartStub’ 1218 | INSN_ASSERT(stubKind == DartStub::InitLateStaticFieldStub || stubKind == DartStub::InitLateFinalStaticFieldStub); | ^~~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1251:108: error: ‘LateInitializationErrorABI’ is not a member of ‘dart’ 1251 | if (objPoolInstr.insCnt > 0 && objPoolInstr.dstReg == A64::Register{ dart::LateInitializationErrorABI::kFieldReg } && objPoolInstr.item.ValueTypeId() == dart::kFieldCid) { | ^~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1251:108: error: no matching function for call to ‘A64::Register::Register()’ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:230:19: note: candidate: ‘constexpr A64::Register::Register(arm64_reg)’ 230 | constexpr Register(arm64_reg r) { | ^~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:230:19: note: conversion of argument 1 would be ill-formed: /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:206:19: note: candidate: ‘constexpr A64::Register::Register(dart::Register)’ 206 | constexpr Register(dart::Register r) { | ^~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:206:19: note: conversion of argument 1 would be ill-formed: /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:204:19: note: candidate: ‘constexpr A64::Register::Register(Value)’ 204 | constexpr Register(Value reg) : reg(reg) {} | ^~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:204:19: note: conversion of argument 1 would be ill-formed: /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:203:19: note: candidate: ‘constexpr A64::Register::Register()’ 203 | constexpr Register() : reg(kNoRegister) {} | ^~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:203:19: note: candidate expects 0 arguments, 1 provided /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:106:24: note: candidate: ‘constexpr A64::Register::Register(const A64::Register&)’ 106 | class alignas(int32_t) Register { | ^~~~ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:106:24: note: conversion of argument 1 would be ill-formed: /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:106:24: note: candidate: ‘constexpr A64::Register::Register(A64::Register&&)’ /home/ql/桌面/blutter/blutter/src/Disassembler_arm64.h:106:24: note: conversion of argument 1 would be ill-formed: /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1251:100: error: expected primary-expression before ‘{’ token 1251 | if (objPoolInstr.insCnt > 0 && objPoolInstr.dstReg == A64::Register{ dart::LateInitializationErrorABI::kFieldReg } && objPoolInstr.item.ValueTypeId() == dart::kFieldCid) { | ^ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1251:100: error: expected ‘)’ before ‘{’ token 1251 | if (objPoolInstr.insCnt > 0 && objPoolInstr.dstReg == A64::Register{ dart::LateInitializationErrorABI::kFieldReg } && objPoolInstr.item.ValueTypeId() == dart::kFieldCid) { | ~ ^ | ) /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1259:77: error: ‘LateInitializationErrorSharedWithoutFPURegsStub’ is not a member of ‘DartStub’ 1259 | INSN_ASSERT(stub->kind == DartStub::LateInitializationErrorSharedWithoutFPURegsStub || stub->kind == DartStub::LateInitializationErrorSharedWithFPURegsStub); | ^~~~~~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1259:152: error: ‘LateInitializationErrorSharedWithFPURegsStub’ is not a member of ‘DartStub’ 1259 | INSN_ASSERT(stub->kind == DartStub::LateInitializationErrorSharedWithoutFPURegsStub || stub->kind == DartStub::LateInitializationErrorSharedWithFPURegsStub); | ^~~~~~~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp: In member function ‘ILResult FunctionAnalyzer::processGdtCallInstr(AsmInstruction)’: /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1326:56: error: ‘dart::DispatchTableNullErrorABI’ has not been declared 1326 | insn.ops[1].reg == ToCapstoneReg(dart::DispatchTableNullErrorABI::kClassIdReg)) | ^~~~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp: In member function ‘ILResult FunctionAnalyzer::processBranchIfSmiInstr(AsmInstruction)’: /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1482:85: error: ‘kCompressedWordSize’ is not a member of ‘dart’ 1482 | if (insn.id() == ARM64_INS_TBZ && insn.ops[1].imm == dart::kSmiTag && dart::kCompressedWordSize == GetCsRegSize(insn.ops[0].reg)) { | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp: In member function ‘ILResult FunctionAnalyzer::processLoadClassIdInstr(AsmInstruction)’: /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1492:80: error: ‘dart::UntaggedObject’ has not been declared 1492 | if (insn.id() == ARM64_INS_LDUR && insn.ops[1].mem.disp == -1 && dart::UntaggedObject::kClassIdTagPos == 12) { | ^~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1504:54: error: ‘dart::UntaggedObject’ has not been declared 1504 | INSN_ASSERT(insn.ops[2].imm == dart::UntaggedObject::kClassIdTagPos); | ^~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1505:54: error: ‘dart::UntaggedObject’ has not been declared 1505 | INSN_ASSERT(insn.ops[3].imm == dart::UntaggedObject::kClassIdTagSize); | ^~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1508:85: error: ‘dart::UntaggedObject’ has not been declared 1508 | else if (insn.id() == ARM64_INS_LDURH && insn.ops[1].mem.disp == 1 && dart::UntaggedObject::kClassIdTagPos == 16) { | ^~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp: In member function ‘ILResult FunctionAnalyzer::processLoadStore(AsmInstruction)’: /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1921:132: error: ‘kCompressedWordSize’ is not a member of ‘dart’ 1921 | const auto arr_idx = (insn.ops[2].imm + dart::kHeapObjectTag - dart::Array::data_offset()) / dart::kCompressedWordSize; | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1929:75: error: ‘kCompressedWordSizeLog2’ is not a member of ‘dart’ 1929 | (insn.ops[2].shift.value == dart::kCompressedWordSizeLog2 || | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1930:83: error: ‘kCompressedWordSizeLog2’ is not a member of ‘dart’ 1930 | (insn.ops[2].shift.value == dart::kCompressedWordSizeLog2 - 1 || insn.ops[2].ext == ARM64_EXT_SXTW))); | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1942:122: error: ‘kCompressedWordSize’ is not a member of ‘dart’ 1942 | INSN_ASSERT(A64::Register{ insn.ops[0].reg } == valReg && GetCsRegSize(insn.ops[0].reg) == dart::kCompressedWordSize); | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:20:15: note: in definition of macro ‘INSN_ASSERT’ 20 | if (!(cond)) throw InsnException(#cond, insn.ptr()); \ | ^~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1951:47: error: ‘kCompressedWordSize’ is not a member of ‘dart’ 1951 | ArrayOp arrayOp(dart::kCompressedWordSize, false, ArrayOp::List); | ^~~~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:1995:50: error: ‘dart::UntaggedTypedData’ has not been declared 1995 | bool isTypedData = dart::UntaggedTypedData::payload_offset() - dart::kHeapObjectTag == arr_data_offset; | ^~~~~ /home/ql/桌面/blutter/blutter/src/CodeAnalyzer_arm64.cpp:2046:113: error: ‘dart::UntaggedTypedData’ has not been declared 2046 | const auto idx = VarStorage::NewSmallImm((offset + dart::kHeapObjectTag - dart::UntaggedTypedData::payload_offset()) / arrayOp.size); | ^~~~~ ninja: build stopped: subcommand failed. Traceback (most recent call last): File "/home/ql/桌面/blutter/blutter.py", line 138, in main(args.indir, args.outdir, args.rebuild, args.vs_sln) File "/home/ql/桌面/blutter/blutter.py", line 120, in main cmake_blutter(blutter_name, dartlib_name, macros) File "/home/ql/桌面/blutter/blutter.py", line 76, in cmake_blutter subprocess.run([NINJA_CMD], cwd=builddir, check=True) File "/usr/lib/python3.11/subprocess.py", line 571, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['ninja']' returned non-zero exit status 1.