CI(release): Update docs
This commit is contained in:
70
docs/FAQ.md
70
docs/FAQ.md
@@ -169,9 +169,77 @@ os.environ['UNICORN_LOG_DETAIL_LEVEL'] = "1" # full filename with line info
|
|||||||
Please note that file names are statically compiled in and can reveal the paths
|
Please note that file names are statically compiled in and can reveal the paths
|
||||||
of the file system used during compilation.
|
of the file system used during compilation.
|
||||||
|
|
||||||
|
## Does Unicorn support ARM PAC (Pointer Authentication)?
|
||||||
|
|
||||||
|
Yes! However, Unicorn by default disables it and enabling it involves a few coding and document reading.
|
||||||
|
|
||||||
|
TLDR:
|
||||||
|
|
||||||
|
Taken from [#1789](https://github.com/unicorn-engine/unicorn/issues/1789).
|
||||||
|
|
||||||
|
```C
|
||||||
|
uc_arm64_cp_reg reg;
|
||||||
|
|
||||||
|
// SCR_EL3
|
||||||
|
reg.op0 = 0b11;
|
||||||
|
reg.op1 = 0b110;
|
||||||
|
reg.crn = 0b0001;
|
||||||
|
reg.crm = 0b0001;
|
||||||
|
reg.op2 = 0b000;
|
||||||
|
|
||||||
|
err = uc_reg_read(uc, UC_ARM64_REG_CP_REG, ®);
|
||||||
|
assert(err == UC_ERR_OK);
|
||||||
|
|
||||||
|
// NS && RW && API
|
||||||
|
reg.val |= (1 | (1<<10) | (1<<17));
|
||||||
|
|
||||||
|
err = uc_reg_write(uc, UC_ARM64_REG_CP_REG, ®);
|
||||||
|
assert(err == UC_ERR_OK);
|
||||||
|
|
||||||
|
// SCTLR_EL1
|
||||||
|
reg.op0 = 0b11;
|
||||||
|
reg.op1 = 0b000;
|
||||||
|
reg.crn = 0b0001;
|
||||||
|
reg.crm = 0b0000;
|
||||||
|
reg.op2 = 0b000;
|
||||||
|
|
||||||
|
err = uc_reg_read(uc, UC_ARM64_REG_CP_REG, ®);
|
||||||
|
assert(err == UC_ERR_OK);
|
||||||
|
|
||||||
|
// EnIA && EnIB
|
||||||
|
reg.val |= (1<<31) | (1<<30);
|
||||||
|
|
||||||
|
err = uc_reg_write(uc, UC_ARM64_REG_CP_REG, ®);
|
||||||
|
assert(err == UC_ERR_OK);
|
||||||
|
|
||||||
|
// HCR_EL2
|
||||||
|
reg.op0 = 0b11;
|
||||||
|
reg.op1 = 0b100;
|
||||||
|
reg.crn = 0b0001;
|
||||||
|
reg.crm = 0b0001;
|
||||||
|
reg.op2 = 0b000;
|
||||||
|
|
||||||
|
// HCR.API
|
||||||
|
reg.val |= (1ULL<<41);
|
||||||
|
|
||||||
|
err = uc_reg_write(uc, UC_ARM64_REG_CP_REG, ®);
|
||||||
|
assert(err == UC_ERR_OK);
|
||||||
|
```
|
||||||
|
|
||||||
|
For further explanation, refer to related ARM documents. Here is an incomplete list:
|
||||||
|
|
||||||
|
- [System register control of pointer authentication](https://developer.arm.com/documentation/ddi0487/latest/)
|
||||||
|
- [EnIA & EnIB](https://developer.arm.com/documentation/ddi0595/2021-12/AArch64-Registers/SCTLR-EL1--System-Control-Register--EL1-?lang=en#fieldset_0-31_31-1)
|
||||||
|
- [HCR.API](https://developer.arm.com/documentation/ddi0601/2020-12/AArch64-Registers/HCR-EL2--Hypervisor-Configuration-Register?lang=en#fieldset_0-41_41-1)
|
||||||
|
Note you could find the definitions of these registers at the end of corresponding documents.
|
||||||
|
|
||||||
|
## I debug my application but soon get an access violation inside unicorn.
|
||||||
|
|
||||||
|
This is intended for Windows. See discussion in [#1841](https://github.com/unicorn-engine/unicorn/issues/1841).
|
||||||
|
|
||||||
## My code does not do what I would expect - is this a bug?
|
## My code does not do what I would expect - is this a bug?
|
||||||
|
|
||||||
Please create an github issue and provide as much details as possible.
|
Please create a github issue and provide as many details as possible.
|
||||||
|
|
||||||
- [ ] Simplified version of your script / source
|
- [ ] Simplified version of your script / source
|
||||||
- Make sure that "no" external dependencies are needed.
|
- Make sure that "no" external dependencies are needed.
|
||||||
|
|||||||
Reference in New Issue
Block a user