RISC-V attributes have a string value if the tag number is odd and an integer value if the tag number is even.
Tag_RISCV_strict_align records the N-byte stack alignment for this object. The default value is 16 for RV32I or RV64I, and 4 for RV32E.
The smallest value will be used if object files with different Tag_RISCV_stack_align values are merged.
Tag_RISCV_arch contains a string for the target architecture taken from the option -march. Different architectures will be integrated into a superset when object files are merged.
Note that the version information of the target architecture must be presented
explicitly in the attribute and abbreviations must be expanded. The version
information, if not given by -march, must be in accordance with the
default specified by the tool. For example, the architecture RV32I
has
to be recorded in the attribute as RV32I2P0
in which 2P0
stands
for the default version of its base ISA. On the other hand, the architecture
RV32G
has to be presented as RV32I2P0_M2P0_A2P0_F2P0_D2P0
in
which the abbreviation G
is expanded to the IMAFD
combination
with default versions of the standard extensions.
Tag_RISCV_unaligned_access is 0 for files that do not allow any unaligned memory accesses, and 1 for files that do allow unaligned memory accesses.
Tag_RISCV_priv_spec contains the major/minor/revision version information of the privileged specification. It will report errors if object files of different privileged specification versions are merged.