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.