| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
i#5520 memtrace encodings: Add AArch32 support (#5672) Adds support for Thumb versus Arm modes in AArch32 with respect to drmemtrace stored encodings by setting the LSB when storing in the tracer and raw2trace, and by properly setting the base mode to Arm when decoding. Augments decode_from_copy() to switch locally to Thumb if either the read or original PC has LSB=1 as that better fits most use cases (including reading from a drmemtrace encoding buffer). Adds AArch32 support to the burst_gencode test. Fixes 3 outstanding AArch32 issues: + Removes a quote in a comment in third_party/libgcc/arm/lib1funcs.S code not handled by old toolchains. + Removes an ASSERT_NOT_TESTED path now hit. + Fixes an AArch32 tracer bug where a 2nd temp register is needed for a 2nd conditional skip. Tested by running the drcacheoff.gencode test on an AArch32 machine which now passes. Issue: #5520 | 3 年前 | |
i#5786: Add precise clean call mangling identification (#5791) Adds new labels delimiting clean call sequences. Converts into a translation record flag when storing translations. Uses the new labels and flag to precisely identify clean call mangling, replacing the previous scheme which incorrectly thought mangled tool pc-relative was a clean call, resulting in incorrect translations and crashes. Adds a test case to api.detach_state by adding a client (by converting it to use static DR) which inserts a pc-relative load. This reproduces the crash on detach, and is fixed with this fix. The added instrumentation caused periodic detach failures which were solved by setting the translation and adding a restore-state event: i#4232 covers trying to improve the situation. Adds a new instr_t.offset field. Stops using instr_t.note to hold encoding offsets for pc-releative operands. Adds a new field instr_t.offset which is used for this purpose. This leaves note values in place across encodings, which is needed for new clean call marking labels and also simplifies rseq handling code. This instr_t field is a compatibility break and we bump the version and OLDEST_COMPATIBLE_VERSION here to 990. Updates dr_get_note docs. Augments logging of xl8 info with new flag info. Reduces DR_NOTE_FIRST_RESERVED to give DR more reserved labels. This is another compatibility break, while at it. Fixes several issues hit in tests that happened to trigger on the heap bucket size and other changes: + Fixes a rank order violation at loglevel 5: xref #1649 + Writes real xstate_bv into signal frame when setting the xstate context to avoid lazy AVX restore problems. + Tweaks the thread_churn test to work around non-linearities. Issue: #5786, #4232 Fixes #5786 | 3 年前 | |
| 5 年前 | ||
i#5786: Add precise clean call mangling identification (#5791) Adds new labels delimiting clean call sequences. Converts into a translation record flag when storing translations. Uses the new labels and flag to precisely identify clean call mangling, replacing the previous scheme which incorrectly thought mangled tool pc-relative was a clean call, resulting in incorrect translations and crashes. Adds a test case to api.detach_state by adding a client (by converting it to use static DR) which inserts a pc-relative load. This reproduces the crash on detach, and is fixed with this fix. The added instrumentation caused periodic detach failures which were solved by setting the translation and adding a restore-state event: i#4232 covers trying to improve the situation. Adds a new instr_t.offset field. Stops using instr_t.note to hold encoding offsets for pc-releative operands. Adds a new field instr_t.offset which is used for this purpose. This leaves note values in place across encodings, which is needed for new clean call marking labels and also simplifies rseq handling code. This instr_t field is a compatibility break and we bump the version and OLDEST_COMPATIBLE_VERSION here to 990. Updates dr_get_note docs. Augments logging of xl8 info with new flag info. Reduces DR_NOTE_FIRST_RESERVED to give DR more reserved labels. This is another compatibility break, while at it. Fixes several issues hit in tests that happened to trigger on the heap bucket size and other changes: + Fixes a rank order violation at loglevel 5: xref #1649 + Writes real xstate_bv into signal frame when setting the xstate context to avoid lazy AVX restore problems. + Tweaks the thread_churn test to work around non-linearities. Issue: #5786, #4232 Fixes #5786 | 3 年前 | |
i#1698 ldstex: Add exclusive memop create and query support (#4546) Adds a new API function instr_is_exclusive_load(). Moves the existing private implementation (for -unsafe_build_ldstex) to become a public function on AArch64. Adds new instruction creation macros for exclusive load, store, and clear opcodes. Adds tests to api.ir for instr_is_exclusive_* and the new creation macros. This necessitated switching api.ir to use runcmp.cmake, since its output is now too large for a CMake regular expression match. Issue: #1698 | 5 年前 | |
i#3092 genapi: Refactor instr_create exports (#4833) The arm, aarch64, and shared instr and opnd create macro files were already pure-public, so we rename them to add _api.h to the end: core/ir/instr_create_shared_api.h, core/ir/arm/instr_create_api.h, core/ir/aarch64/instr_create_api.h, For x86, we also rename core/ir/x86/instr_create_api.h, but since we have some private macros, we also create a new instr_create_shared.h and x86/instr_create.h for those. The core includes instr_create_shared.h now. Replaces the handful of dcontext_t types with void*. Issue: #3092 | 5 年前 | |
i#3092 genapi: Rename and clean up opcode headers (#4829) Moves the small non-public parts of core/ir/*/opcode.h into instr.h and opnd.h. Cleans up core/ir/*/opcode.h and codec.py's generated content such that these files are now just directly copied to the public include/ directory. Renames opcode.h to opcode_api.h for all 3 arches to make it clear they are part of the public interface. Issue: #3092 | 5 年前 | |
i#4719 qemu: Fix bad ARM encodings for BLX, BX, BXJ (#5163) Adds missing required-1 bits in the ARM encoding table entries for OP_blx, OP_bx, and OP_bxj. Without the bits, some hardware still accepts the instructions (which is why we did not notice the problem before), but they are technically unsound, and QEMU thinks they are invalid, breaking some of our tests under QEMU. Tested on QEMU with the forthcoming #2414 drwrap-drreg-test, and directly with several other decoders: Prior encoding for "blx r11": <stdin>:1:1: warning: invalid instruction encoding 0x3b 0x00 0x20 0xe1 ^ llvm-mc: e120003b capstone: e120003b <INVALID: errcode 0> bfd: e120003b ; <UNDEFINED> instruction: 0xe120003b New encoding: $ disasm_a32 e12fff3b llvm-mc: e12fff3b blx r11 capstone: e12fff3b blx r11 bfd: e12fff3b blx fp Setting up more external-decoder testing is beyond the scope of this fix: #1686 covers that. Issue: #4719, #1686, #2414 | 4 年前 | |
| 4 年前 | ||
i#3092 genapi: Rename and clean up opcode headers (#4829) Moves the small non-public parts of core/ir/*/opcode.h into instr.h and opnd.h. Cleans up core/ir/*/opcode.h and codec.py's generated content such that these files are now just directly copied to the public include/ directory. Renames opcode.h to opcode_api.h for all 3 arches to make it clear they are part of the public interface. Issue: #3092 | 5 年前 | |
i#1684 xarch-IR: Move IR files from core/arch to core/ir (#4321) Moves all of the IR-related files (instruction generation, encoding, decoding, disassembly, instructions, operands, instruction lists) from core/arch to core/ir, mirroring the arch-specific subdirectories under core/ir. This is a code cleanup step toward properly isolating the drdecode library, as well as moving us toward the ability to build for a separate target architecture from the host architecture and eventually perhaps building in multiple target architectures in the same binary for decoding and IR manipulation. Also renames mangle_utils.c to ir_utils.c to better fit its purpose and location. Issue: #1684 | 5 年前 | |
i#1684 xarch-IR: Move IR files from core/arch to core/ir (#4321) Moves all of the IR-related files (instruction generation, encoding, decoding, disassembly, instructions, operands, instruction lists) from core/arch to core/ir, mirroring the arch-specific subdirectories under core/ir. This is a code cleanup step toward properly isolating the drdecode library, as well as moving us toward the ability to build for a separate target architecture from the host architecture and eventually perhaps building in multiple target architectures in the same binary for decoding and IR manipulation. Also renames mangle_utils.c to ir_utils.c to better fit its purpose and location. Issue: #1684 | 5 年前 | |
i#1684 xarch-IR: Move IR files from core/arch to core/ir (#4321) Moves all of the IR-related files (instruction generation, encoding, decoding, disassembly, instructions, operands, instruction lists) from core/arch to core/ir, mirroring the arch-specific subdirectories under core/ir. This is a code cleanup step toward properly isolating the drdecode library, as well as moving us toward the ability to build for a separate target architecture from the host architecture and eventually perhaps building in multiple target architectures in the same binary for decoding and IR manipulation. Also renames mangle_utils.c to ir_utils.c to better fit its purpose and location. Issue: #1684 | 5 年前 | |
i#1684 xarch-IR: Move IR files from core/arch to core/ir (#4321) Moves all of the IR-related files (instruction generation, encoding, decoding, disassembly, instructions, operands, instruction lists) from core/arch to core/ir, mirroring the arch-specific subdirectories under core/ir. This is a code cleanup step toward properly isolating the drdecode library, as well as moving us toward the ability to build for a separate target architecture from the host architecture and eventually perhaps building in multiple target architectures in the same binary for decoding and IR manipulation. Also renames mangle_utils.c to ir_utils.c to better fit its purpose and location. Issue: #1684 | 5 年前 | |
| 4 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 4 年前 | ||
| 4 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 4 年前 |