| ## 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 > %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 > %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 ] |