## Test how yaml2obj sets the value of a symbol's st_other fields. ## Show that yaml2obj reports an error when using an STO_* flag that belongs ## to a different machine type to what is specified by the YAML. # RUN: not yaml2obj --docnum=1 2>&1 %s | FileCheck %s --check-prefix=ERR # ERR: error: an unknown value is used for symbol's 'Other' field: STO_MIPS_OPTIONAL --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_386 Symbols: - Name: foo Other: [ STO_MIPS_OPTIONAL ] ## Test that STO_* can be used with their correct machine type. ## We use the same YAML as above, but with a change of machine type. # RUN: yaml2obj --docnum=2 %s -o %t2 # RUN: llvm-readobj --symbols %t2 | FileCheck %s --check-prefix=USE-OTHER # USE-OTHER: Name: foo # USE-OTHER: Other [ (0x4) # USE-OTHER-NEXT: STO_MIPS_OPTIONAL (0x4) # USE-OTHER-NEXT: ] --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_MIPS Symbols: - Name: foo Other: [ STO_MIPS_OPTIONAL ] ## Test that we can mix named and unnamed constants and set ## st_other to any arbitrary value. # RUN: yaml2obj --docnum=3 %s -o %t3 # RUN: llvm-readobj --symbols %t3 | FileCheck %s --check-prefix=VALUE # VALUE: Name: foo # VALUE: Other [ # VALUE-SAME: (0x4) # VALUE: Name: bar # VALUE: Other [ # VALUE-SAME: (0x7) # VALUE: Name: zed # VALUE: Other [ # VALUE-SAME: (0xFF) --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_MIPS Symbols: - Name: foo Other: [ 0x4 ] - Name: bar Other: [ STV_PROTECTED, 4 ] - Name: zed Other: [ STV_PROTECTED, STO_MIPS_OPTIONAL, 0xf8 ]