summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_arm64.cc
AgeCommit message (Collapse)Author
2024-09-19Print the full relative address in Arm64 Santiago Aboy Solanes
By printing with trailing zeroes (e.g. 0x00004074 instead of 0x4074) this brings Arm64 on par with other architectures. Bug: 364443075 Fixes: 364443075 Test: art/test/testrunner/testrunner.py --target --64 --optimizing Change-Id: Iade36a91316ca4310d71846ff2953ff7419877ee
2022-06-09VIXL Dissassembler Integration Upgrade May. 2022 Greg Cawthorne
This patch is needed as the VIXL disassembler visitor instrumentation interface has changed. VIXL now has all of its instruction specific instrumentation functions declared as private and therefore they cannot be overriden by the ART disassembler class as it was before. Now it is required by VIXL to override the main catch-all generic Visit function, which now passes with it a metadata object. This metadata is then used in the overriding function to select which instrumentation to perform based on the instruction type detected in the instruction sequence at runtime. This patch is tested against ART with the public VIXL tag 6.3.0 (https://github.com/Linaro/vixl/tree/6.3.0) having been merged into the AOSP ./external/vixl repo. Test: test-art-target Test: test-art-host Test: test-art-host-vixl Test: run-vixl-tests Test: art_disassembler_tests Change-Id: I9c2b936354763f0d116dfb7fe355841b9f833a34
2020-09-03Improve disasembly of BL to thread entrypoint trampoline. Vladimir Marko
Test: Manual, search for "\bbl\b" in `m dump-oat` output and oatdump of an individual oat file for arm and arm64. Change-Id: Idb6d8d1a21b2aa8c77e5b72f24faf7a4e655294c
2016-09-08ART: Detach libart-disassembler from libart Andreas Gampe
Some more intrusive changes than I would have liked, as long as ART logging is different from libbase logging. Fix up some includes. Bug: 15436106 Bug: 31338270 Test: m test-art-host Change-Id: I9fbe4b85b2d74e079a4981f3aec9af63b163a461
2016-08-19ART: Add thread offset printing hook to disassembler Andreas Gampe
To prepare separation of disassembler from libart, add a function hook to the disassembler options for thread offset name printing. Bug: 15436106 Change-Id: I9e9b7e565ae923952c64026f675ac527b560f51b
2016-08-01ART: Convert pointer size to enum Andreas Gampe
Move away from size_t to dedicated enum (class). Bug: 30373134 Bug: 30419309 Test: m test-art-host Change-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269
2016-07-15Fixes to build against new VIXL interface. Scott Wakeling
- Fix namespace usage and use of deprecated functions. - Link all dependants to new libvixl-arm64 target for now. Change-Id: Iee6f299784fd663fc2a759f3ee816fdbc511e509
2016-05-12Fix oatdump crash on arm64/arm code. Aart Bik
Also adds 16 bit literal information. Rationale: When "run-away" instructions are disassembled, the literal addresses may go out of range, causing oatdump to crash. This CL guards memory access against the full memory range allocated to assembly instructions and data (it is possible but not really necessary to refine this a bit). Out of range arguments are now displayed as (?) to denote the issue, which is a lot nicer than crashing. BUG=28670871 Change-Id: I51e9b6a6a99162546fe31059f14278e8980451c2
2015-08-06Introduce arch-specific checker tests. Alexandre Rames
- The '.cfg' output is now created on target. - Arch-specific checker tests can be created by inserting a suffix. For example: /// CHECK-START-ARM64: int Main.foo(int) register (after) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue Change-Id: I55cdb37f8e806c7ffdde6b676c8f44ac30b59051
2015-05-22ARM64: Move xSELF from x18 to x19. Serban Constantinescu
This patch moves xSELF to callee saved x19 and removes support for ETR (external thread register), previously used across native calls. Change-Id: Icee07fbb9292425947f7de33d10a0ddf98c7899b Signed-off-by: Serban Constantinescu <serban.constantinescu@linaro.org>
2015-03-06ART: Enable the use of relative addresses in the arm64 disassembler. Alexandre Rames
Also, only keep register aliases for the link register 'lr' and the thread register 'tr' in the arm64 disassembler. Other aliases are not very important, and this way we don't have to provide aliases specialised for Quick or Optimizing. Change-Id: Ie7a04910f0c587710a0cf2648203d7e89eab5d1f
2015-02-03ARM/ARM64: Dump thread offset. Zheng Xu
Dump thread offset in compiler verbose log for arm32/arm64 and oatdump for arm64. Before patch : 0x4e: ldr lr, [rSELF, #604] After patch : 0x4e: ldr lr, [rSELF, #604] ; pTestSuspend Change-Id: I514e69dc44b1cf4c8a8fa085b31f93cf6a1b7c91
2014-11-28Vixl: Update the VIXL interface to VIXL 1.7 and enable VIXL debug. Serban Constantinescu
This patch updates the interface to VIXL 1.7 and enables the debug version of VIXL when ART is built in debug mode. Change-Id: I443fb941bec3cffefba7038f93bb972e6b7d8db5 Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2014-10-29Improvements to the ARM64 disassembler. Alexandre Rames
This contains three changes: - Use register aliases in the disassembly. - When loading from a literal pool, show what is being loaded. - Disassemble using absolute addresses on ARM64. This ensures that addresses disassembled are coherent with instruction location addresses shown. Examples of disassembled instructions before and after the changes: Before: movz w17, #0x471f ldr d9, pc+736 (addr 0x72690d50) After: movz wip1, #0x471f ldr d9, pc+736 (addr 0x72690d50) (-745.133) Change-Id: I72fdc160fac26f74126921834f17a581c26fd5d8
2014-10-22C++11 related clean-up of DISALLOW_.. Ian Rogers
Move DISALLOW_COPY_AND_ASSIGN to delete functions. By no having declarations with no definitions this prompts better warning messages so deal with these by correcting the code. Add a DISALLOW_ALLOCATION and use for ValueObject and mirror::Object. Make X86 assembly operand types ValueObjects to fix compilation errors. Tidy the use of iostream and ostream. Avoid making cutils a dependency via mutex-inl.h for tests that link against libart. Push tracing dependencies into appropriate files and mutex.cc. x86 32-bit host symbols size is increased for libarttest, avoid copying this in run-test 115 by using symlinks and remove this test's higher than normal ulimit. Fix the RunningOnValgrind test in RosAllocSpace to not use GetHeap as it returns NULL when the heap is under construction by Runtime. Change-Id: Ia246f7ac0c11f73072b30d70566a196e9b78472b
2014-10-13ART: ARM64: Fix instruction addresses in the disassembly. Alexandre Rames
Change-Id: Ic8b6e0d5cd15e029de9bc82e0a4fc2e33d07936c
2014-09-16Avoid printing absolute addresses in oatdump Brian Carlstrom
- Added printing of OatClass offsets. - Added printing of OatMethod offsets. - Added bounds checks for code size size, code size, mapping table, gc map, vmap table. - Added sanity check of 100k for code size. - Added partial disassembly of questionable code. - Added --no-disassemble to disable disassembly. - Added --no-dump:vmap to disable vmap dumping. - Reordered OatMethod info to be in file order. Bug: 15567083 (cherry picked from commit 34fa79ece5b3a1940d412cd94dbdcc4225aae72f) Change-Id: I2c368f3b81af53b735149a866f3e491c9ac33fb8
2014-03-10AArch64: Add ARM64 Disassembler Serban Constantinescu
This patch adds disassembler support for ARM64 based on VIXL. Change-Id: Ic7f5e197350809632145d932dbae8f6c16aebd13 Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>