| ## Validate MSPABI ELF Build Attributes |
| |
| ## The header of .MSP430.attributes can be specified with. |
| ## ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| ## 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00, |
| ## |
| ## Following that are individual bytes describing the ISA, code model, data |
| ## model and optionally enum size. |
| ## |
| ## If enum size is being tested, then the second byte (indicating the length of |
| ## the section), and last 32-bit int (indicating the length of the |
| ## subsection) of the header should be incremented by 2. This is to account for |
| ## the additional bytes for the enum size tag and value. |
| |
| # HEADER: BuildAttributes { |
| # HEADER-NEXT: FormatVersion: 0x41 |
| # HEADER-NEXT: Section 1 { |
| # HEADER-NEXT: SectionLength: 22 |
| # HEADER-NEXT: Vendor: mspabi |
| # HEADER-NEXT: Tag: Tag_File (0x1) |
| # HEADER-NEXT: Size: 11 |
| |
| # ENUM-HEADER: BuildAttributes { |
| # ENUM-HEADER-NEXT: FormatVersion: 0x41 |
| # ENUM-HEADER-NEXT: Section 1 { |
| # ENUM-HEADER-NEXT: SectionLength: 24 |
| # ENUM-HEADER-NEXT: Vendor: mspabi |
| # ENUM-HEADER-NEXT: Tag: Tag_File (0x1) |
| # ENUM-HEADER-NEXT: Size: 13 |
| |
| # MSP430: Tag: 4 |
| # MSP430-NEXT: Value: 1 |
| # MSP430-NEXT: TagName: ISA |
| # MSP430-NEXT: Description: MSP430 |
| |
| # MSP430X: Tag: 4 |
| # MSP430X-NEXT: Value: 2 |
| # MSP430X-NEXT: TagName: ISA |
| # MSP430X-NEXT: Description: MSP430X |
| |
| # SMALL-CODE: Tag: 6 |
| # SMALL-CODE-NEXT: Value: 1 |
| # SMALL-CODE-NEXT: TagName: Code_Model |
| # SMALL-CODE-NEXT: Description: Small |
| |
| # LARGE-CODE: Tag: 6 |
| # LARGE-CODE-NEXT: Value: 2 |
| # LARGE-CODE-NEXT: TagName: Code_Model |
| # LARGE-CODE-NEXT: Description: Large |
| |
| # SMALL-DATA: Tag: 8 |
| # SMALL-DATA-NEXT: Value: 1 |
| # SMALL-DATA-NEXT: TagName: Data_Model |
| # SMALL-DATA-NEXT: Description: Small |
| |
| # LARGE-DATA: Tag: 8 |
| # LARGE-DATA-NEXT: Value: 2 |
| # LARGE-DATA-NEXT: TagName: Data_Model |
| # LARGE-DATA-NEXT: Description: Large |
| |
| # RESTRICTED-DATA: Tag: 8 |
| # RESTRICTED-DATA-NEXT: Value: 3 |
| # RESTRICTED-DATA-NEXT: TagName: Data_Model |
| # RESTRICTED-DATA-NEXT: Description: Restricted |
| |
| # SMALL-ENUM: Tag: 10 |
| # SMALL-ENUM-NEXT: Value: 1 |
| # SMALL-ENUM-NEXT: TagName: Enum_Size |
| # SMALL-ENUM-NEXT: Description: Small |
| |
| # INTEGER-ENUM: Tag: 10 |
| # INTEGER-ENUM-NEXT: Value: 2 |
| # INTEGER-ENUM-NEXT: TagName: Enum_Size |
| # INTEGER-ENUM-NEXT: Description: Integer |
| |
| # DONT-CARE-ENUM: Tag: 10 |
| # DONT-CARE-ENUM-NEXT: Value: 3 |
| # DONT-CARE-ENUM-NEXT: TagName: Enum_Size |
| # DONT-CARE-ENUM-NEXT: Description: Don't Care |
| |
| ## MSP430 ISA |
| # RUN: yaml2obj --docnum=1 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430,SMALL-CODE,SMALL-DATA |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00, |
| 0x04, 0x01, 0x06, 0x01, 0x08, 0x01 ] |
| |
| |
| ## MSP430X ISA, Small Code Model, Small Data Model |
| # RUN: yaml2obj --docnum=2 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,SMALL-CODE,SMALL-DATA |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00, |
| 0x04, 0x02, 0x06, 0x01, 0x08, 0x01 ] |
| |
| ## MSP430X Large Code Model, Small Data Model |
| # RUN: yaml2obj --docnum=3 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,LARGE-CODE,SMALL-DATA |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00, |
| 0x04, 0x02, 0x06, 0x02, 0x08, 0x01 ] |
| |
| ## MSP430X Small Code Model, Large Data Model |
| # RUN: yaml2obj --docnum=4 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,SMALL-CODE,LARGE-DATA |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00, |
| 0x04, 0x02, 0x06, 0x01, 0x08, 0x02 ] |
| |
| ## MSP430X Small Code Model, Restricted Data Model |
| # RUN: yaml2obj --docnum=5 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,SMALL-CODE,RESTRICTED-DATA |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00, |
| 0x04, 0x02, 0x06, 0x01, 0x08, 0x03 ] |
| |
| ## MSP430X Small Code Model, Small Data Model, Small Enums |
| # RUN: yaml2obj --docnum=6 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes ENUM-HEADER,MSP430X,SMALL-CODE,SMALL-DATA,SMALL-ENUM |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x18, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00, |
| 0x04, 0x02, 0x06, 0x01, 0x08, 0x01, 0x0a, 0x01 ] |
| |
| ## MSP430X Small Code Model, Small Data Model, Integer Enums |
| # RUN: yaml2obj --docnum=7 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes ENUM-HEADER,MSP430X,SMALL-CODE,SMALL-DATA,INTEGER-ENUM |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x18, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00, |
| 0x04, 0x02, 0x06, 0x01, 0x08, 0x01, 0x0a, 0x02 ] |
| |
| |
| ## MSP430X Small Code Model, Small Data Model, "Don't Care" Enums |
| # RUN: yaml2obj --docnum=8 %s -o %t.o |
| # RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes ENUM-HEADER,MSP430X,SMALL-CODE,SMALL-DATA,DONT-CARE-ENUM |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_MSP430 |
| Sections: |
| - Name: .MSP430.attributes |
| Type: SHT_MSP430_ATTRIBUTES |
| ContentArray: [ 0x41, 0x18, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62, |
| 0x69, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00, |
| 0x04, 0x02, 0x06, 0x01, 0x08, 0x01, 0x0a, 0x03 ] |