CI(release): Update docs

This commit is contained in:
mio
2025-02-13 21:17:29 +08:00
parent 1ea6b07653
commit cd1492d819

View File

@@ -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
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, &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, &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, &reg);
assert(err == UC_ERR_OK);
// EnIA && EnIB
reg.val |= (1<<31) | (1<<30);
err = uc_reg_write(uc, UC_ARM64_REG_CP_REG, &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, &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?
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
- Make sure that "no" external dependencies are needed.