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. All Profiles are expanded
to the mandatory extensions it includes then processing. For example,
RVI20U32 is expanded to RV32I2P0 for processing, which contains
the mandatory extensions I as it defined. And you can also combine
Profiles with ISA use underline, like RVI20U32_D is expanded to the
RV32I2P0_F2P0_D2P0.
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.