Skip to content

Commit 628c0b2

Browse files
committed
New attribute: Tag_RISCV_reserved_register
- Motivation: Tag_RISCV_reserved_register used for record reserved register information, desiged for resolve checking compatibility between ABI subvariants like overlay ABI. - Meaning: This attribute is a bit-vector of reserved register, syntax for assembly language please refer https://github.com/riscv-non-isa/riscv-asm-manual . - Merge Rule: It will report errors if link object files with different Tag_RISCV_reserved_register values, but allowed link with object with and without Tag_RISCV_reserved_register value, the final value will take from the object which has set Tag_RISCV_reserved_register.
1 parent 4969a01 commit 628c0b2

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

riscv-elf.adoc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,7 @@ value if the tag number is even.
896896
| Tag_RISCV_priv_spec | 8 | uleb128 | Indicates the major version of the privileged specification.
897897
| Tag_RISCV_priv_spec_minor | 10 | uleb128 | Indicates the minor version of the privileged specification.
898898
| Tag_RISCV_priv_spec_revision | 12 | uleb128 | Indicates the revision version of the privileged specification.
899+
| Tag_RISCV_reserved_register | 14 | uleb128 | Indicates the extra reserved register information.
899900
| Reserved for non-standard attribute | >= 32768 | - | -
900901
|===
901902

@@ -942,6 +943,23 @@ Tag_RISCV_priv_spec contains the major/minor/revision version information of
942943
the privileged specification. It will report errors if object files of different
943944
privileged specification versions are merged.
944945

946+
===== Tag_RISCV_reserved_register, 14, uleb128=register bit-vector
947+
948+
Tag_RISCV_reserved_register contains the information about the reserved
949+
registers which are not reserved by ABI, it might reserved by specific
950+
compiler option like `-ffixed-x4` or special purpose ABI variant like
951+
overlay ABI.
952+
953+
Format of Tag_RISCV_reserved_register is a bit-vector, each bit corresponding to
954+
a register, the bit order is same as dwarf register number.
955+
First bit is must set, used to distinguish between attribute is unset or having
956+
empty reserved register set.
957+
958+
It will report errors if link object files with different
959+
Tag_RISCV_reserved_register values, but allowed link with object with and
960+
without Tag_RISCV_reserved_register value, the final value will take from the
961+
object which has set Tag_RISCV_reserved_register.
962+
945963
== Code relaxation
946964

947965
At link time, when all the memory objects have been resolved, the code sequence

0 commit comments

Comments
 (0)