Skip to content

Commit 5688578

Browse files
committed
Add program property for CFI extension
Define two bit for landing pad and shadow stack, and we plan to defined third bit `GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_COMPLEX` for complex labeling scheme.
1 parent 31ba3a1 commit 5688578

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

riscv-elf.adoc

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,6 +1395,43 @@ handle program property types even if they are not recognized.
13951395
| GNU_PROPERTY_RISCV_UINT32_OR_AND_HI | 0xc0017fff
13961396
|===
13971397

1398+
[[rv-prog-prop-type]]
1399+
.RISC-V-specific program property types
1400+
[cols="3,2,2,3"]
1401+
[width=80%]
1402+
|===
1403+
| Name | Value | Size | Meaning
1404+
1405+
| GNU_PROPERTY_RISCV_FEATURE_1_AND | 0xc0000000 | 4-bytes | RISC-V processor-specific features used in program.
1406+
|===
1407+
1408+
==== GNU_PROPERTY_RISCV_FEATURE_1_AND
1409+
1410+
`GNU_PROPERTY_RISCV_FEATURE_1_AND` describe a set of features, each bit describe
1411+
a different features.
1412+
1413+
[%autowidth]
1414+
|===
1415+
| Bit | Bit Name
1416+
| 0 | GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_SIMPLE
1417+
| 1 | GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS
1418+
|===
1419+
1420+
`GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_SIMPLE` This bit indicate that all executable
1421+
sections are built to be compatible with the landing pad mechanism provided by
1422+
the `Zicfilp` extension. An executable or shared library with this bit set is
1423+
required to generate PLTs with the landing pad (`lpad`) instruction, and all
1424+
label are set to `1`.
1425+
1426+
`GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS`: This bit indicate that all executable
1427+
sections are built to be compatible with the shadow stack mechanism provided by
1428+
the `Zicfiss` extension. Loading an executable or shared library with this bit
1429+
set requires the execution environment to provide either the `Zicfiss` extension
1430+
or the `Zimop` extension. When the executable or shared library is compiled with
1431+
compressed instructions then loading an executable with this bit set requires
1432+
the execution environment to provide the `Zicfiss` extension or to provide both
1433+
the `Zcmop` and `Zimop` extensions.
1434+
13981435
=== Mapping Symbol
13991436

14001437
The section can have a mixture of code and data or code with different ISAs.

0 commit comments

Comments
 (0)