Closed spr234 closed 8 months ago
I guess it is an unexpected generated code pattern from Dart compiler.
I pushed a patch to not stop the program if an error occurs in analysis step. You can rerun with "--rebuild" option. An error is still printed. Also, please give me an error message with printed assembly. I might be able to fix a bug.
Here you go
Dart version: 3.1.0, Snapshot: 7dbbeeb8ef7b91338640dca3927636de, Target: android arm64
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /home/trixie/blutter/build/blutter_dartvm3.1.0_android_arm64
[10/10] Linking CXX executable blutter_dartvm3.1.0_android_arm64
-- Install configuration: "Release"
-- Installing: /home/trixie/blutter/blutter/../bin/blutter_dartvm3.1.0_android_arm64
libapp is loaded at 0x7f9b91000000
Dart heap at 0x7f9a00000000
Analyzing the application
Analysis error at line 1301 ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e3508: ldurb w17, [x0, #-1]
0x8e350c: and x16, x17, x16, lsr #2
0x8e3510: tst x16, x28, lsr #32
0x8e3514: b.eq #0x8e3520
ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e3508: ldurb w17, [x0, #-1]
0x8e350c: and x16, x17, x16, lsr #2
0x8e3510: tst x16, x28, lsr #32
0x8e3514: b.eq #0x8e3520ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e35bc: ldurb w17, [x0, #-1]
0x8e35c0: and x16, x17, x16, lsr #2
0x8e35c4: tst x16, x28, lsr #32
0x8e35c8: b.eq #0x8e35d4ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e35bc: ldurb w17, [x0, #-1]
0x8e35c0: and x16, x17, x16, lsr #2
0x8e35c4: tst x16, x28, lsr #32
0x8e35c8: b.eq #0x8e35d4ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e3610: ldurb w17, [x0, #-1]
0x8e3614: and x16, x17, x16, lsr #2
0x8e3618: tst x16, x28, lsr #32
0x8e361c: b.eq #0x8e3628ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e3610: ldurb w17, [x0, #-1]
0x8e3614: and x16, x17, x16, lsr #2
0x8e3618: tst x16, x28, lsr #32
0x8e361c: b.eq #0x8e3628ILResult FunctionAnalyzer::processLoadFieldTableInstr(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e3654: ldr x16, [x27, #0x38]
0x8e3658: cmp w0, w16
0x8e365c: b.ne #0x8e3674
0x8e3660: ldr x2, [x27, #0x900]ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e36a8: ldurb w17, [x0, #-1]
0x8e36ac: and x16, x17, x16, lsr #2
0x8e36b0: tst x16, x28, lsr #32
0x8e36b4: b.eq #0x8e36c0ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e36a8: ldurb w17, [x0, #-1]
0x8e36ac: and x16, x17, x16, lsr #2
0x8e36b0: tst x16, x28, lsr #32
0x8e36b4: b.eq #0x8e36c0ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e36ec: ldurb w17, [x0, #-1]
0x8e36f0: and x16, x17, x16, lsr #2
0x8e36f4: tst x16, x28, lsr #32
0x8e36f8: b.eq #0x8e3704ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e36ec: ldurb w17, [x0, #-1]
0x8e36f0: and x16, x17, x16, lsr #2
0x8e36f4: tst x16, x28, lsr #32
0x8e36f8: b.eq #0x8e3704ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e377c: ldurb w17, [x0, #-1]
0x8e3780: and x16, x17, x16, lsr #2
0x8e3784: tst x16, x28, lsr #32
0x8e3788: b.eq #0x8e3794ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e377c: ldurb w17, [x0, #-1]
0x8e3780: and x16, x17, x16, lsr #2
0x8e3784: tst x16, x28, lsr #32
0x8e3788: b.eq #0x8e3794ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e37ac: ldurb w17, [x0, #-1]
0x8e37b0: and x16, x17, x16, lsr #2
0x8e37b4: tst x16, x28, lsr #32
0x8e37b8: b.eq #0x8e37c4ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e37ac: ldurb w17, [x0, #-1]
0x8e37b0: and x16, x17, x16, lsr #2
0x8e37b4: tst x16, x28, lsr #32
0x8e37b8: b.eq #0x8e37c4ILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e37d4: ldurb w17, [x0, #-1]
0x8e37d8: and x16, x17, x16, lsr #2
0x8e37dc: tst x16, x28, lsr #32
0x8e37e0: b.eq #0x8e37ecILWBResult FunctionAnalyzer::processWriteBarrier(AsmInstruction)
: insn.id() == ARM64_INS_BL
0x8e37d4: ldurb w17, [x0, #-1]
0x8e37d8: and x16, x17, x16, lsr #2
0x8e37dc: tst x16, x28, lsr #32
0x8e37e0: b.eq #0x8e37ecCommitted a fix.
I have no full assembly to check. So, it might be wrong. If there is still an error, can you send me a library?
I am still getting
Analysis error at line 752 ILResult FunctionAnalyzer::processLoadFieldTableInstr(AsmInstruction)
: insn.id() == ARM64_INS_LDR
0x8e365c: b.ne #0x8e3674
0x8e3660: ldr x2, [x27, #0x900]
0x8e3664: add x24, x27, #0xc, lsl #12
0x8e3668: ldr x24, [x24, #0x660]
Where can I send you library?
By the way, apart from that error message, Blutter is working like a charm !!
I guess you don't have to send me a library anymore. Just fixed the last error. Thanks for a bug report.
Yup, No more error Thankyou for making such tool.
I have same error in dart 3.1.3
I am getting following error
Dart version: 3.1.0, Snapshot: 7dbbeeb8ef7b91338640dca3927636de, Target: android arm64 libapp is loaded at 0x1cb1b260000 Dart heap at 0x1cc00000000 Analyzing the application at ....\src\CodeAnalyzer_arm64.cpp: 984: error: expected: insn.id() == ARM64_INS_BL
I am using Windows
also tried on debian trixie, same error
How can I fix that?