Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add AArch64 support: master issue #1569

Open
derekbruening opened this issue Dec 12, 2014 · 6 comments
Open

add AArch64 support: master issue #1569

derekbruening opened this issue Dec 12, 2014 · 6 comments

Comments

@derekbruening
Copy link
Contributor

Split from issue #1551 as our initial focus is just AArch32.

@toshipiazza
Copy link
Contributor

In api/samples/CMakeLists.txt I noticed that bbbuf.c is the only sample listed as not yet ported from AArch32 to AArch64. However #1982 modifies bbbuf.c to use drx_buf, to which AArch64 support was added (not by me).

Would someone with an AArch64 setup be able to verify it works and modify CMakelists.txt as appropriate?

@fhahn
Copy link
Contributor

fhahn commented Mar 2, 2017

bbbuf was enabled on AArch64 a while ago by fa7e5c5

@toshipiazza
Copy link
Contributor

drx_buf_insert_buf_memcpy() and the related tests in drx_buf-test.dll.c were disabled for Aarch64 because of #2440. However, it looks like this was partially fixed by 3c49cc0, enough so that the relevant XINST_CREATE_ macros are now there. Would anyone with an Aarch64 build be able to build/verify drx_buf_insert_buf_memcpy() works on Aarch64?

@fhahn
Copy link
Contributor

fhahn commented Jul 11, 2017

@toshipiazza drx_buf-test.dll.c fails during execution, with all #ifndef AARCH64 removed #2520

@derekbruening
Copy link
Contributor Author

Unfortunately we didn't have auto-links for partial commits so I'm pasting in the many commits contributing to the port so far:

2017-07-20 c908cdd i#1569 AArch64: Make encodings easier to specify. (#2549)
2017-07-12 654f7b2 i#1569 AArch64: Fix bug in encoding (SIMD structure load/store). (#2527)
2017-07-12 8d4d5ed i#1569 AArch64: Initialise variables in encoder functions. (#2528)
2017-07-11 69913cb i#1569 AArch64: In encoder/decoder, use all bits provided by pattern. (#2517)
2017-07-10 aec4977 i#1569 AArch64: Follow-up to 428b896: Use opndset for ADR and ADRP. (#2516)
2017-07-10 bc483ac i#1569 AArch64: Follow-up to 3275b81: check X30 opnd in encoder. (#2515)
2017-06-21 662d094 i#1569 AArch64: Fix uninitialized variable error when building with GCC 7 on AArch64. (#2480)
2017-05-09 2fb8c25 i#1569 AArch64: Initialise the shared reset stub on AArch64. (#2424)
2017-05-09 42d0ebc i#1569 AArch64: Implement move (immediate) to zero register. (#2423)
2017-05-09 a77808f i#1569 AArch64: Implement arch_mcontext_reset_stolen_reg. (#2422)
2017-05-02 5e98bc1 i#1569 AArch64: Enable syscall-mod test. (#2388)
2017-04-20 b98cdb8 i#1569 AArch64: Add macro to create BL instructions. (#2332)
2017-04-19 3275b81 i#1569 AArch64: Add support for implicit X30 operands for BL and BLR. (#2345)
2017-04-07 428b896 i#1569 AArch64: Add macro to create ADR and ADRP instructions. (#2317)
2017-03-30 2ea03bb i#1569 AArch64: Print instruction if encoding fails. (#2315)
2017-03-30 3e18d73 i#1569 AArch64: Move assignments out of expressions in encode_gen.h. (#2314)
2017-03-28 2c4c19c i#1569 AArch64: Make dst reg also a src reg for BFM. (#2309)
2017-02-02 e25c65f i#1569 AArch64: update ISA references throughout the docs
2017-02-02 94727bc i#1569 AArch64: document that A64 is supported
2017-02-02 e574c28 i#1569 AArch64: add no32 support to package.cmake
2017-01-27 9973461 i#2130, i#1569: Port api/samples/div.c to AArch64 and enable it.
2017-01-27 3bfb964 i#1569 AArch64: Port and enable api/samples/opcodes.c.
2017-01-15 fa7e5c5 i#1569 AArch64: Port and enable api/samples/bbbuf.c
2016-12-16 03ce33b i#1569 AArch64: Add ARMv8.1 atomic instructions.
2016-12-13 f2a6669 i#1569 AArch64: Handle self-modifying programs.
2016-12-08 7ff49b0 i#1569 AArch64: Create clean_call_opt_shared.c and refactor.
2016-11-28 9451323 i#1569 AArch64: Allow smaller "Child hits" in drcachesim-phys.templatex.
2016-11-22 4a5189e i#1569 AArch64: Rename members of callee_info_t.
2016-11-22 23a236e i#1569 AArch64: Rename members of clean_call_info_t.
2016-11-21 93a3fef i#1569 AArch64: Remove INSTR_CREATE_xx and its uses.
2016-11-17 4c259cc i#1569 AArch64: Rename NUM_XMM_{REGS,SAVED,SLOTS} to NUM_SIMD_...
2016-11-16 c3bd1ca i#1569 AArch64: Replace cache_sync_asm with clear_icache, in C.
2016-11-15 c6a93e1 i#1569 AArch64: Implement flush_icache in suite/tests/tools.[ch].
2016-11-11 a1331d5 i#1569 AArch64: Complete encode/decode of non-FP, non-SIMD instructions.
2016-11-03 580e5dc i#1569 AArch64: Fix codec bugs: LDP/STP size, ADD/SUB shift, pre_index.
2016-10-20 ca1808c i#1569 AArch64: Add --no-export-dynamic when building allasm_aarch64_cache.
2016-10-18 c54e068 i#1569 AArch64: Make dynamorio_syscall only read the 7th arg when used.
2016-10-13 6158cd0 i#1569 AArch64: Add pure-assembly test of drcachesim.
2016-10-13 5c2bc64 i#1569 AArch64: Implement drutil_expand_rep_string_ex.
2016-10-10 a73afa6 i#1569 AArch64: Add a pure-assembly ISA test.
2016-10-07 72f8d40 i#1569 AArch64: relax drcachesim output for A64
2016-10-04 1fb9c9e i#1569 AArch64: Reimplement ELF import/export iterators.
2016-10-03 de02228 i#1569 AArch64: Fix drx_buf on AArch64.
2016-09-29 ec600f3 i#1569 AArch64: Add missing "flags" argument in call to SYS_unlinkat.
2016-09-28 6b577be i#1569 AArch64: Updates to api.dis-a64 test.
2016-09-28 7090b33 i#1569 AArch64: Change disassembly of offsets.
2016-09-23 0eb7ed6 Revert "i#1569 AArch64: Reimplement ELF import/export iterators."
2016-09-23 b92660f i#1569 AArch64: Reimplement ELF import/export iterators.
2016-09-23 bee1be5 i#1551 ARM, i#1569 AArch64: Port common.getretaddr to ARM and AArch64.
2016-09-23 96a1f3b i#1551 ARM, i#1569 AArch64: Port linux.infinite test to ARM and AArch64.
2016-09-23 e85c5d5 i#1551 ARM, i#1569 AArch64: Enable client.crashmsg and api.ir-static.
2016-09-21 e844d0d i#1729/i#1569 A64 traces: Reintroduce drcachesim trace_entry_t packing.
2016-09-19 a5dc679 i#1729/i#1569 A64 traces: temporarily revert trace packing to fix A64
2016-09-16 f43e120 i#1569 AArch64: Add api.drdecode test for AArch64.
2016-09-16 6819e3f i#1569 AArch64: Make drcachesim template looser.
2016-09-15 f96ec6e i#1569 AArch64: Disable tests that do not yet work on AArch64.
2016-09-15 fed02f6 i#1551 ARM, i#1569 AArch64: Make proc_{save,restore}fpstate a no-op.
2016-09-15 26025a5 i#1569 AArch64: Handle AArch64 in runsuite_common_pre.cmake.
2016-09-13 6d08225 i#1569 AArch64: Adapt debug check in translate_walk_restore.
2016-09-13 932f8f4 i#1569 AArch64: Fix drreg-test with double move to XZR.
2016-09-12 82dadac i#1569 AArch64: Implement dr_app_start and dr_app_running_under_dynamorio.
2016-09-12 a4d1705 i#1569 AArch64: Make drutil work with load/store (register).
2016-09-12 9fd9343 i#1569 AArch64: Handle LDRSW (literal).
2016-09-12 27e4737 i#1569 AArch64: Implement instr_is_mov_constant, instr_is_exclusive_store.
2016-09-12 b95d14c i#1569 AArch64: Change disassembly of B.cond and shift/extend operations.
2016-09-09 9f8099d i#1569 AArch64: Implement insert_clear_eflags.
2016-09-05 521301a i#1569 AArch64: Reimplement encoder and decoder.
2016-08-31 d8d99f1 i#1569,i#1551,i#975 static start/stop: disable on ARM and A64
2016-08-30 bed62b2 i#1569 AArch64: Add enums and struct members for memory operands.
2016-08-10 712b06f i#1569 AArch64: Use user_pt_regs instead of user_regs_struct.
2016-08-08 e7b2650 i#1569: Fix AArch64 build broken by 914d4df.
2016-08-08 575e7a5 i#1569 AArch64: Make base_disp bitfields in opnd_t architecture-dependent.
2016-08-08 94423a2 i#1569 AArch64: Use negative disp rather than DR_OPND_NEGATED.
2016-07-27 7ee7189 i#1569 AArch64: Enable inlining of system calls.
2016-07-27 6f9a7a5 i#1569 AArch64: Adapt emit_special_ibl_xfer for AArch64 ibl routine.
2016-07-21 a23cf44 i#1569 AArch64: Implement dr_call_on_clean_stack.
2016-07-20 e1c7996 i#1569 AArch64: Fix instrace_simple and memtrace_simple.
2016-07-19 d039d22 i#1569 AArch64: Implement clean call.
2016-07-19 6279847 i#1569 AArch64: Implement some simple functions required by clients.
2016-07-18 1836b86 i#1569 AArch64: Adapt tests that use DynamoRIO extension libraries.
2016-07-14 cc36252 i#1569 AArch64: Correct definition of DR_REG_SYSNUM.
2016-07-13 2ab9b37 i#1569 AArch64: Implement dr_try_start.
2016-07-13 1b6a007 i#1569 AArch64: Implement resolver for TLS descriptors.
2016-07-13 fe1024c i#1569 AArch64: Fix tracer.cpp.
2016-07-13 f55c242 i#1569 AArch64: Make drutil and drwrap work.
2016-07-11 dea5f2e i#1569 AArch64: Make drreg work.
2016-07-11 a9f37bd i#1569 AArch64: Replace ARM with AARCHXX in drsyms-test.templatex.
2016-07-08 3e3bba6 i#1569 AArch64: Add dis-a64 pre-commit test.
2016-07-07 9edd275 i#1569 AArch64: Add "nzcv" test, an alternative to "eflags" test.
2016-07-07 9f40776 i#1569 AArch64: Enable 7 additional "client.dr*" tests.
2016-07-04 e5f674e i#1569 AArch64: Make ELF_R_TLS_DESC fail at run time, not load time.
2016-07-04 ecdd2f7 i#1569 AArch64: Disable sign_extend_immed on AArch64.
2016-07-04 b86fc3a i#1569 AArch64: Make ELF_R_TLS_DESC fail at run time, not load time.
2016-07-04 f038052 i#1569 AArch64: Remove REG_X31_INVALID, and remove XZR from GPR range.
2016-07-01 067a239 i#1569 AArch64: Implement exchanging app's TLS.
2016-06-29 3375189 i#1569 AArch64: Fix polluted X1 in handle_sigreturn.
2016-06-28 e445404 i#1569 AArch64: Implement "clone" system call.
2016-06-28 cd10b2c i#1569 AArch64: Implement simple functions in decode.c, instr.c, opnd.c.
2016-06-28 80892ff i#1569 AArch64: Implement insert
{push,pop}_all_registers.
2016-05-13 ebde9bf i#1569 AArch64: Implement emit_indirect_branch_lookup.
2016-06-28 5c6a68f i#1569 AArch64: Add encode/decode of arithmetic and logical operations.
2016-06-28 e74114f i#1569 AArch64: Replace "AARCH64 || ARM" with AARCHXX in many places.
2016-06-28 0aceb3a i#1569 AArch64: Define AARCHXX when ARM or AARCH64 is defined.
2016-06-27 15291ca i#1569 AArch64: Add UAPI syscall numbers.
2016-06-21 f9989fd i#1569 AArch64: Bug fix in DEF_atomic_add_exchange.
2016-06-21 faf5b30 i#1569 AArch64: Work around incorrect definition of SIGSTKSZ.
2016-06-16 17ad154 i#1569 AArch64: Implement primitive disassembly for "-loglevel 3".
2016-06-13 4c48376 i#1569 AArch64: Implement fragment unlinking.
2016-06-10 609b33e i#1569 AArch64: Implement signal handling.
2016-06-10 5a466b1 i#1551 ARM, i#1569 AArch64: Replace atomic_xchg with atomic_swap.
2016-06-08 d56d87a i#1569 AArch64: Improve alignment of simd data in {dr,priv}_mcontext_t.
2016-06-08 2f4ee9d i#1569 AArch64: Implement functions required for threadexit2 test.
2016-06-08 d966e7d i#1569 AArch64: Implement xfer_to_new_libdr.
2016-06-07 c49e30d i#1569 AArch64: Start implementing real instruction decoder/encoder.
2016-06-03 a64a62e i#1569 AArch64: Implement dynamorio_app_take_over.
2016-06-02 7007d24 i#1551 ARM, i#1569 AArch64: Fix call_with_retaddr and ret_noncall_trace.c.
2016-06-02 8b29fdc i#1569 AArch64: Implement tests/security-common/codemod.c.
2016-06-02 43f52fc i#1569 AArch64: Fix dr_fpu_exception_init and test_call_switch_stack.
2016-06-02 14a1489 i#1569 AArch64: Implement restarting interrupted system calls.
2016-05-27 6f02d27 i#1569 AArch64: Distinguish SP (stack pointer) from ZR (zero register).
2016-05-26 a7909b2 i#1569 AArch64: Save X1 in emit_do_syscall_common.
2016-05-26 e79fec3 i#1569 AArch64: Handle SYS_readlinkat.
2016-05-24 d15e394 i#1569 AArch64: Improve handling of fragment prefixes.
2016-05-19 0f5898d i#1569 AArch64: Handle fork using "clone" in post_system_call.
2016-05-11 e002084 i#1569 AArch64: Correctly mangle conditional branch using stolen reg.
2016-05-04 a38ff93 i#1569 AArch64: Implement cleanup_and_terminate.
2016-05-11 54cb6cc i#1569 AArch64: Implement a few missing assembler routines.
2016-05-11 3244f48 i#1569 AArch64: Implement MCXT_SYSNUM_REG and get_mcontext_frame_ptr.
2016-05-11 7e6ad68 i#1569 AArch64: Implement encode and decode of SVC instruction.
2016-05-11 5ed621b i#1569 AArch64: Fix bug in branch patching and improve stub patching.
2016-05-06 f9dabc4 i#1569 AArch64: Implement stolen register mangling.
2016-05-06 505704a i#1569 AArch64: Add pessimistic register operands when decoding OP_xx.
2016-05-03 e9772cf i#1569 AArch64: Use predicate for B.cond instead of second operand.
2016-04-27 1140b8e i#1569 AArch64: Change prototype of decode_sizeof.
2016-04-27 e0ed364 i#1569 AArch64: Remove dead "X64" code in arch/arm/.
2016-04-21 fc62ef0 i#1569 AArch64: Modify CMakeLists.txt to omit tests that do not build.
2016-04-21 464629d i#1569 AArch64: Implement miscellaneous missing things.
2016-04-21 6744477 i#1569 AArch64: Implement AArch64 parts of merged mangle.c.
2016-04-21 2fd8c4c i#1569 AArch64: Implement encoding for mangling LDR (literal, SIMD&FP).
2016-04-20 8cf22a9 i#1569 AArch64: Implement ATOMIC_4BYTE_WRITE and ATOMIC_8BYTE_WRITE.
2016-04-20 418c9b8 i#1569 AArch64: Implement suite/tests/tools.[ch].
2016-04-20 58e1a2b i#1569 AArch64: Implement cpuid_supported.
2016-04-19 c9eed16 i#1569 AArch64: Replace apsr/cpsr with nzcv, fpcr, fpsr.
2016-04-14 aefbf99 i#1569 AArch64: Implement parts of instr.c.
2016-04-14 13e5afd i#1569 AArch64: Implement parts of emit_utils.c and arch_exports.h.
2016-04-13 543ef98 i#1569 AArch64: Fix bug in dr_setjmp.
2016-04-12 51bd839 i#1569 AArch64: Implement atomic operations.
2016-04-12 f44cd91 i#1569 AArch64: Implement thread-local storage.
2016-03-23 66d0cc9 i#1569 AArch64: Add incomplete encoder and decoder.
2016-03-23 e09208e i#1569 AArch64: Implement functions in assembler source files.
2016-03-23 c4b55cb i#1569 AArch64: Adapt for syscalls that Linux arm64 does not have.
2016-03-22 318d1fe i#1569 AArch64: Use PTRACE_GETREGSET and PTRACE_SETREGSET.
2016-03-22 1b4b1f4 i#1569 AArch64: Add AArch64 cross-compilation to test suite.
2016-03-21 793392d i#1569 AArch64: Make AArch64 build.
2016-03-11 c2025c9 Revert "i#1569 AArch64: Add AArch64 cross-compilation to test suite."
2016-03-11 b1c621f Revert "i#1569 AArch64: Make AArch64 build."
2016-03-11 05346ed i#1569 AArch64: Add AArch64 cross-compilation to test suite.
2016-03-11 c2ecca2 i#1569 AArch64: Make AArch64 build.
2016-03-03 cc19b1a i#1569 AArch64: Add files in core/arch/aarch64/.
2016-03-01 04391a5 i#1569 AArch64: Add three AArch64 files with work-in-progress stubs.
2016-02-29 82379f7 i#1569 AArch64: Implement basic build system.
2016-02-29 f57285f i#1569 AArch64: Add drsyms/libelftc-aarch64/.
2015-09-29 1ca2860 i#1569 port DynamoRIO to AArch64: disable installation check warning

@egrimley
Copy link
Contributor

egrimley commented Dec 6, 2017

Full list of AArch64-tagged open issues: link

More important issues grouped and roughly prioritised:

#1698 ldrex..strex pair constraints challenge instrumentation and even core operation

  • This is a major issue on certain systems.

#2626 Finish AArch64 encoder/decoder
#2440 AArch64 is missing XINST_CREATE and INSTR_CREATE macros
#2443 add exhaustive AArch64 decoder/encoder/macro consistency tests

  • Non-load/store FP/SIMD are handled as a fall-through "OP_xx".
  • The macros are not finished even for load/store and non-FP/SIMD.

#2425 Node.js does not run under DynamoRIO on AArch64
#2506 Crash running Java application on aarch64

  • There seems to be an undiagnosed problem with some self-modifying programs.

#2417 Fix flaky tests on AArch64

  • The flakiness is particularly severe on certain systems.
  • In some cases the test may be buggy.

#2065 several code emitting and patching routines fail to sync the hardware icache

  • This may have been fixed by now. Someone should check!

#2502 races in ARM lockless data structure reads

  • This might be the underlying cause of some flakiness.

#2358 CRASH on AArch64 when many signals are received

  • Perhaps this points at an underlying cause of flakiness.

#2154 BUILD: Building for Android AARCH64 on Linux

  • We have AArch32 Android, AArch32 Linux, AArch64 Linux; AArch64 Android is missing.

#1621 clean call optimizations on AArch64: out-of-line, analyze and reduce cxt sw, inline

  • There's an unfinished "pull" for this.

xxxxx Port Dr Memory to AArch64

  • See Dr Memory issues.
  • Note that 64-bit does not work fully even on Intel: "Dr. Memory does not yet support uninitialized read detection for 64-bit applications".

#2210 AArchXX clean calls handle far too few use cases, blocking tool development

  • Perhaps not really blocking anything immediately but coverage should be improved.

#2072 drreg-test fails with non-default stolen register

  • A "non-AArch64-specific bug in the handling of faults on instructions that access the stolen register".

#1936 DynamoRIO fails to run trivial "clone" example on ARM

  • Not as bad as it sounds.

#2390 Reduce overhead of indirect branch on AArch64

  • An optimisation.

fhahn added a commit that referenced this issue May 16, 2018
Instructions that take logical immediates are not encoded with shifts.

Issue: #1569
Change-Id: Ib85757d2bdb6c05008d14be47f4d706a85f4f58f
fhahn added a commit that referenced this issue May 16, 2018
Instructions that take logical immediates are not encoded with shifts.

Issue: #1569
derekbruening pushed a commit that referenced this issue Jul 3, 2020
Add decoding and encoding for system registers TPIDRRO_EL0 and CNTVCT_EL0.

Issue: #1569
derekbruening added a commit that referenced this issue Oct 29, 2020
Enables the diagnostic option -steal_reg_at_reset for AArch64,
generalizing the existing ARM code.

Switches -reset_at_fragment_count to work in release build by using
the sum of the release stats num_bbs and num_traces.

Adds a release-build syslog for an informational notification when any
reset occurs.

Adds a test of -steal_reg_at_reset.

Issue: #1569
Vincent-lau added a commit that referenced this issue Sep 1, 2021
…5045)

This patch incorporated changes from PR #2442 that implemented the initial version
of trace support for AArch64.

This patch also fixed some corner cases not considered in PR #2442
where the assumption was incorrect and caused the program to crash.

Trace support is not yet enabled by default, but can be enabled with "-enable_traces".

This commit introduces internal control flow by adding a trace_exit_label in
fixup_indirect_trace_exit, which might break code that assumes linear control
flow (such as translate.c). 
Either special support is needed for this trace_exit_label or alternative
schemes should be used that has a linear control.

Some complexities in this commit can be removed once we have #5062 
implemented and decode_fragment eliminated.

Co-authored-by: Kevin Zhou <[email protected]>

Issues: #1569, #2974
AssadHashmi added a commit that referenced this issue May 11, 2022
This patch reads from the ID_AA64ISAR0_EL1 features register and sets
the following if supported:
FEATURE_AES    FEATURE_PMULL FEATURE_SHA1    FEATURE_SHA256
FEATURE_SHA512 FEATURE_CRC32 FEATURE_LSE     FEATURE_RDM
FEATURE_SM3    FEATURE_SM4   FEATURE_DotProd FEATURE_FHM
FEATURE_FlagM2 FEATURE_RNG   FEATURE_SHA3    FEATURE_FlagM

Example output in logfile:
- - - snip
Processor features:
 ID_AA64ISAR0_EL1 = 0x0000000000011120
   Processor has FEATURE_AES
   Processor has FEATURE_PMULL
   Processor has FEATURE_SHA1
   Processor has FEATURE_SHA256
   Processor has FEATURE_CRC32
- - - snip

ID_AA64ISAR1_EL1 and ID_AA64PFR0_EL1 are also read. The features for
these will be implemented in the next patch.

Issues: #5474, #1569
AssadHashmi added a commit that referenced this issue May 17, 2022
This patch reads from the ID_AA64ISAR0_EL1 features register and sets
the following if supported:
FEATURE_AES       FEATURE_PMULL FEATURE_SHA1   FEATURE_SHA256
FEATURE_SHA512 FEATURE_CRC32 FEATURE_LSE     FEATURE_RDM
FEATURE_SM3       FEATURE_SM4    FEATURE_DotProd FEATURE_FHM
FEATURE_FlagM2  FEATURE_RNG    FEATURE_SHA3      FEATURE_FlagM

Example output in logfile:
- - - snip
Processor features:
 ID_AA64ISAR0_EL1 = 0x0000000000011120
   Processor has FEATURE_AES
   Processor has FEATURE_PMULL
   Processor has FEATURE_SHA1
   Processor has FEATURE_SHA256
   Processor has FEATURE_CRC32
- - - snip

ID_AA64ISAR1_EL1 and ID_AA64PFR0_EL1 are also read. The features for
these will be implemented in the next patch.

Issues: #5474, #1569
AssadHashmi added a commit that referenced this issue Jul 8, 2022
This patch implements the codec side of the AArch64 FEATURE_ support
patch, PR5491. A feature name field is added to each opcode in
codec_*.txt files which is used to generate feature checks in the
encoder, e.g.

    switch (instr->opcode) {
    case OP_cas:
 #     if !defined(DR_HOST_NOT_TARGET) && !defined(STANDALONE_DECODER)
       if (!proc_has_feature(FEATURE_LSE))
           return ENCFAIL;
 #     endif
       enc = encode_opndsgen_08a07c00_001f03ff(pc, instr,..., di);
       if (enc != ENCFAIL)
           return enc;

Issues: #5475, #1569, #2626
AssadHashmi added a commit that referenced this issue Jul 11, 2022
This patch implements the codec side of the AArch64 FEATURE_ support
patch, PR #5491. A feature name field is added to each opcode in
codec_*.txt files which is used to generate feature checks in the
encoder, e.g.

    switch (instr->opcode) {
    case OP_cas:
 #     if !defined(DR_HOST_NOT_TARGET) && !defined(STANDALONE_DECODER)
       if (!proc_has_feature(FEATURE_LSE))
           return ENCFAIL;
 #     endif
       enc = encode_opndsgen_08a07c00_001f03ff(pc, instr,..., di);
       if (enc != ENCFAIL)
           return enc;

Issues: #5475, #1569, #2626
AssadHashmi added a commit that referenced this issue Jul 18, 2022
The Limited Ordering Regions feature is required for the v8.1
load-acquire and store-release instructions like LDLAR and STLLR which
rely on the hardware providing order between memory accesses to
regions of the physical address map. Read from ID_AA64MMFR1_EL1.

Issues: #5475, #1569
AssadHashmi added a commit that referenced this issue Jul 18, 2022
The Limited Ordering Regions feature is required for the v8.1
load-acquire and store-release instructions like LDLAR and STLLR which
rely on the hardware providing order between memory accesses to
regions of the physical address map. Read from ID_AA64MMFR1_EL1.

Issues: #5475, #1569
philramsey-arm added a commit that referenced this issue Sep 19, 2023
GCC11 has stricter requirements for uninitialised
variables in -O3 mode

Issue: #1569
ksco added a commit that referenced this issue Jan 13, 2024
…e_rt_t (#6554)

The `retcode` field in `sigframe_rt_t` is only available in x86 and
AArch32, this fixes a buffer overflow in `memcpy_rt_frame()` on RISC-V.

Issue: #3544 #1551 #1569
joshua-warburton added a commit that referenced this issue Apr 10, 2024
This patch adds some code to the runsuite wrapper
to print critical information about the runner such
as os, kernal version and cpu.

Currently this block looks like:

=========== System info ===========
OS: Ubuntu 20.04.6 LTS
Kernel Version: 5.15.0-1043-aws
CPU: Neoverse V1
Clang version: Ubuntu clang version 12.0.0-3ubuntu1~20.04.5
GCC version: gcc (Ubuntu 11.4.0-2ubuntu1~20.04) 11.4.0
Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics...
===================================

and is only shown during AArch64 runs, just before
the results.

issue: #1569

Change-Id: Ic68d1987b036ec853f5ef1c232bb96ce8d652663
derekbruening pushed a commit that referenced this issue Apr 11, 2024
toolchain-arm64.cmake was renamed to toolchain-aarch64.cmake in PR
#4753, but building.dox was not in sync.

Issue: #1569
joshua-warburton added a commit that referenced this issue Apr 15, 2024
This patch adds some code to the runsuite wrapper
to print critical information about the runner such as os, kernel
version and cpu.

Currently this block looks like:
```
=========== System info ===========
OS: Ubuntu 20.04.6 LTS
Kernel Version: 5.15.0-1043-aws
CPU: Neoverse V1
Clang version: Ubuntu clang version 12.0.0-3ubuntu1~20.04.5
GCC version: gcc (Ubuntu 11.4.0-2ubuntu1~20.04) 11.4.0
Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics... 
===================================
```
and is only shown during AArch64 runs, just before the results.

issue: #1569
edeiana added a commit that referenced this issue May 9, 2024
Fixes a size mismatch between dr_reg_fixer[] and d_r_reg_id_to_virtual[] maps in aarch64.
Adds a check in encode_debug_checks() (in core/ir/${ARCH}/encode.c) for all architecures.

Issue: #6662, #3544, #1569
edeiana added a commit that referenced this issue May 10, 2024
Fixes a size mismatch between dr_reg_fixer[] and d_r_reg_id_to_virtual[]
maps in aarch64.
Adds a check in encode_debug_checks() (in core/ir/${ARCH}/encode.c) for
all architecures.

Issue: #6662, #3544, #1569
chenhy0106 added a commit to chenhy0106/dynamorio that referenced this issue Jun 3, 2024
1. For RISCV64, conditional branch instruction of 'C' extension may not reach after adding clean call. So like X86, we add support to detect and convert compressed cbr to longer version.
2. For AARCH64 and RISCV64, a cbr may use the stolen reg and can not be mangled later as it is meta. So we check whether a cbr uses the stolen reg and replace it with a scratch reg.
Now cbr works for AARCH64 and RISCV64. Still not work for ARM32 because of some bugs unrelated to cbr sample.

Issue: DynamoRIO#1569,DynamoRIO#3544
chenhy0106 added a commit to chenhy0106/dynamorio that referenced this issue Jun 3, 2024
1. For RISCV64, conditional branch instruction of 'C' extension may not reach after adding clean call. So like X86, we add support to detect and convert compressed cbr to longer version.
2. For AARCH64 and RISCV64, a cbr may use the stolen reg and can not be mangled later as it is meta. So we check whether a cbr uses the stolen reg and replace it with a scratch reg.
Now cbr works for AARCH64 and RISCV64. Still not work for ARM32 because of some bugs unrelated to cbr sample.

Issue: DynamoRIO#1569, DynamoRIO#3544
chenhy0106 added a commit to chenhy0106/dynamorio that referenced this issue Jun 3, 2024
1. For RISCV64, conditional branch instruction of 'C' extension may not reach after adding clean call. So like X86, we add support to detect and convert compressed cbr to longer version.
2. For AARCH64 and RISCV64, a cbr may use the stolen reg and can not be mangled later as it is meta. So we check whether a cbr uses the stolen reg and replace it with a scratch reg.
Now cbr works for AARCH64 and RISCV64. Still not work for ARM32 because of some bugs unrelated to cbr sample.

Issue: DynamoRIO#1569, DynamoRIO#3544
chenhy0106 added a commit to chenhy0106/dynamorio that referenced this issue Jun 3, 2024
1. For RISCV64, conditional branch instruction of 'C' extension may not reach after adding clean call. So like X86, we add support to detect and convert compressed cbr to longer version.
2. For AARCH64 and RISCV64, a cbr may use the stolen reg and can not be mangled later as it is meta. So we check whether a cbr uses the stolen reg and replace it with a scratch reg. Now cbr works for AARCH64 and RISCV64. Still not work for ARM32 because of some bugs unrelated to cbr sample.

Issue: DynamoRIO#1569, DynamoRIO#3544
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants