Skip to content

Commit ecf913c

Browse files
committed
Minor revision
Changes: - Rename `GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_SIMPLE` to `GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED` - Fix wrong offset in the first PLT stubs for the simple landing pad PLT.
1 parent 3abd293 commit ecf913c

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

riscv-elf.adoc

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -733,8 +733,8 @@ using all other PLT sytle.
733733
[cols="1,2"]
734734
[width=70%]
735735
|===
736-
| Default PLT | -
737-
| Simple landing pad PLT | Must use this PLT style when `GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_SIMPLE` is set.
736+
| Default PLT | -
737+
| Unlabeled landing pad PLT | Must use this PLT style when `GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED` is set.
738738
|===
739739

740740
The first entry of a shared object PLT is a special entry that calls
@@ -765,9 +765,9 @@ And occupies three 16 byte entries for the simple landing pad PLT style:
765765
----
766766
1: lpad 0
767767
auipc t2, %pcrel_hi(.got.plt)
768-
sub t1, t1, t3 # shifted .got.plt offset + hdr size + 12
768+
sub t1, t1, t3 # shifted .got.plt offset + hdr size + 16
769769
l[w|d] t3, %pcrel_lo(1b)(t2) # _dl_runtime_resolve
770-
addi t1, t1, -(hdr size + 12) # shifted .got.plt offset
770+
addi t1, t1, -(hdr size + 16) # shifted .got.plt offset
771771
addi t0, t2, %pcrel_lo(1b) # &.got.plt
772772
srli t1, t1, log2(16/PTRSIZE) # .got.plt offset
773773
l[w|d] t0, PTRSIZE(t0) # link map
@@ -1508,21 +1508,23 @@ Description:: Additional information about the program property type.
15081508

15091509
==== GNU_PROPERTY_RISCV_FEATURE_1_AND
15101510

1511-
`GNU_PROPERTY_RISCV_FEATURE_1_AND` describe a set of features, each bit describe
1512-
a different features.
1511+
1512+
`GNU_PROPERTY_RISCV_FEATURE_1_AND` describes a set of features, where each bit
1513+
represents a different feature. The linker should perform a bitwise AND
1514+
operation when merging different objects.
15131515

15141516
[%autowidth]
15151517
|===
15161518
| Bit | Bit Name
1517-
| 0 | GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_SIMPLE
1519+
| 0 | GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED
15181520
| 1 | GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS
15191521
|===
15201522

1521-
`GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_SIMPLE` This bit indicate that all executable
1522-
sections are built to be compatible with the landing pad mechanism provided by
1523-
the `Zicfilp` extension. An executable or shared library with this bit set is
1524-
required to generate PLTs with the landing pad (`lpad`) instruction, and all
1525-
label are set to `0`.
1523+
`GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED` This bit indicate that all
1524+
executable sections are built to be compatible with the landing pad mechanism
1525+
provided by the `Zicfilp` extension. An executable or shared library with this
1526+
bit set is required to generate PLTs with the landing pad (`lpad`) instruction,
1527+
and all label are set to `0`.
15261528

15271529
`GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS`: This bit indicate that all executable
15281530
sections are built to be compatible with the shadow stack mechanism provided by

0 commit comments

Comments
 (0)