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