218 lines
6.6 KiB
Plaintext
218 lines
6.6 KiB
Plaintext
## 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 ]
|