218 lines · plain
1## Validate MSPABI ELF Build Attributes2 3## The header of .MSP430.attributes can be specified with.4## ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,5## 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00,6##7## Following that are individual bytes describing the ISA, code model, data8## model and optionally enum size.9##10## If enum size is being tested, then the second byte (indicating the length of11## the section), and last 32-bit int (indicating the length of the12## subsection) of the header should be incremented by 2. This is to account for13## the additional bytes for the enum size tag and value.14 15# HEADER: BuildAttributes {16# HEADER-NEXT: FormatVersion: 0x4117# HEADER-NEXT: Section 1 {18# HEADER-NEXT: SectionLength: 2219# HEADER-NEXT: Vendor: mspabi20# HEADER-NEXT: Tag: Tag_File (0x1)21# HEADER-NEXT: Size: 1122 23# ENUM-HEADER: BuildAttributes {24# ENUM-HEADER-NEXT: FormatVersion: 0x4125# ENUM-HEADER-NEXT: Section 1 {26# ENUM-HEADER-NEXT: SectionLength: 2427# ENUM-HEADER-NEXT: Vendor: mspabi28# ENUM-HEADER-NEXT: Tag: Tag_File (0x1)29# ENUM-HEADER-NEXT: Size: 1330 31# MSP430: Tag: 432# MSP430-NEXT: Value: 133# MSP430-NEXT: TagName: ISA34# MSP430-NEXT: Description: MSP43035 36# MSP430X: Tag: 437# MSP430X-NEXT: Value: 238# MSP430X-NEXT: TagName: ISA39# MSP430X-NEXT: Description: MSP430X40 41# SMALL-CODE: Tag: 642# SMALL-CODE-NEXT: Value: 143# SMALL-CODE-NEXT: TagName: Code_Model44# SMALL-CODE-NEXT: Description: Small45 46# LARGE-CODE: Tag: 647# LARGE-CODE-NEXT: Value: 248# LARGE-CODE-NEXT: TagName: Code_Model49# LARGE-CODE-NEXT: Description: Large50 51# SMALL-DATA: Tag: 852# SMALL-DATA-NEXT: Value: 153# SMALL-DATA-NEXT: TagName: Data_Model54# SMALL-DATA-NEXT: Description: Small55 56# LARGE-DATA: Tag: 857# LARGE-DATA-NEXT: Value: 258# LARGE-DATA-NEXT: TagName: Data_Model59# LARGE-DATA-NEXT: Description: Large60 61# RESTRICTED-DATA: Tag: 862# RESTRICTED-DATA-NEXT: Value: 363# RESTRICTED-DATA-NEXT: TagName: Data_Model64# RESTRICTED-DATA-NEXT: Description: Restricted65 66# SMALL-ENUM: Tag: 1067# SMALL-ENUM-NEXT: Value: 168# SMALL-ENUM-NEXT: TagName: Enum_Size69# SMALL-ENUM-NEXT: Description: Small70 71# INTEGER-ENUM: Tag: 1072# INTEGER-ENUM-NEXT: Value: 273# INTEGER-ENUM-NEXT: TagName: Enum_Size74# INTEGER-ENUM-NEXT: Description: Integer75 76# DONT-CARE-ENUM: Tag: 1077# DONT-CARE-ENUM-NEXT: Value: 378# DONT-CARE-ENUM-NEXT: TagName: Enum_Size79# DONT-CARE-ENUM-NEXT: Description: Don't Care80 81## MSP430 ISA82# RUN: yaml2obj --docnum=1 %s -o %t.o83# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430,SMALL-CODE,SMALL-DATA84 85--- !ELF86FileHeader:87 Class: ELFCLASS3288 Data: ELFDATA2LSB89 Type: ET_REL90 Machine: EM_MSP43091Sections:92 - Name: .MSP430.attributes93 Type: SHT_MSP430_ATTRIBUTES94 ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,95 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00,96 0x04, 0x01, 0x06, 0x01, 0x08, 0x01 ]97 98 99## MSP430X ISA, Small Code Model, Small Data Model100# RUN: yaml2obj --docnum=2 %s -o %t.o101# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,SMALL-CODE,SMALL-DATA102 103--- !ELF104FileHeader:105 Class: ELFCLASS32106 Data: ELFDATA2LSB107 Type: ET_REL108 Machine: EM_MSP430109Sections:110 - Name: .MSP430.attributes111 Type: SHT_MSP430_ATTRIBUTES112 ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,113 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00,114 0x04, 0x02, 0x06, 0x01, 0x08, 0x01 ]115 116## MSP430X Large Code Model, Small Data Model117# RUN: yaml2obj --docnum=3 %s -o %t.o118# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,LARGE-CODE,SMALL-DATA119 120--- !ELF121FileHeader:122 Class: ELFCLASS32123 Data: ELFDATA2LSB124 Type: ET_REL125 Machine: EM_MSP430126Sections:127 - Name: .MSP430.attributes128 Type: SHT_MSP430_ATTRIBUTES129 ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,130 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00,131 0x04, 0x02, 0x06, 0x02, 0x08, 0x01 ]132 133## MSP430X Small Code Model, Large Data Model134# RUN: yaml2obj --docnum=4 %s -o %t.o135# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,SMALL-CODE,LARGE-DATA136 137--- !ELF138FileHeader:139 Class: ELFCLASS32140 Data: ELFDATA2LSB141 Type: ET_REL142 Machine: EM_MSP430143Sections:144 - Name: .MSP430.attributes145 Type: SHT_MSP430_ATTRIBUTES146 ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,147 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00,148 0x04, 0x02, 0x06, 0x01, 0x08, 0x02 ]149 150## MSP430X Small Code Model, Restricted Data Model151# RUN: yaml2obj --docnum=5 %s -o %t.o152# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes HEADER,MSP430X,SMALL-CODE,RESTRICTED-DATA153 154--- !ELF155FileHeader:156 Class: ELFCLASS32157 Data: ELFDATA2LSB158 Type: ET_REL159 Machine: EM_MSP430160Sections:161 - Name: .MSP430.attributes162 Type: SHT_MSP430_ATTRIBUTES163 ContentArray: [ 0x41, 0x16, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,164 0x69, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00,165 0x04, 0x02, 0x06, 0x01, 0x08, 0x03 ]166 167## MSP430X Small Code Model, Small Data Model, Small Enums168# RUN: yaml2obj --docnum=6 %s -o %t.o169# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes ENUM-HEADER,MSP430X,SMALL-CODE,SMALL-DATA,SMALL-ENUM170 171--- !ELF172FileHeader:173 Class: ELFCLASS32174 Data: ELFDATA2LSB175 Type: ET_REL176 Machine: EM_MSP430177Sections:178 - Name: .MSP430.attributes179 Type: SHT_MSP430_ATTRIBUTES180 ContentArray: [ 0x41, 0x18, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,181 0x69, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00,182 0x04, 0x02, 0x06, 0x01, 0x08, 0x01, 0x0a, 0x01 ]183 184## MSP430X Small Code Model, Small Data Model, Integer Enums185# RUN: yaml2obj --docnum=7 %s -o %t.o186# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes ENUM-HEADER,MSP430X,SMALL-CODE,SMALL-DATA,INTEGER-ENUM187 188--- !ELF189FileHeader:190 Class: ELFCLASS32191 Data: ELFDATA2LSB192 Type: ET_REL193 Machine: EM_MSP430194Sections:195 - Name: .MSP430.attributes196 Type: SHT_MSP430_ATTRIBUTES197 ContentArray: [ 0x41, 0x18, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,198 0x69, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00,199 0x04, 0x02, 0x06, 0x01, 0x08, 0x01, 0x0a, 0x02 ]200 201 202## MSP430X Small Code Model, Small Data Model, "Don't Care" Enums203# RUN: yaml2obj --docnum=8 %s -o %t.o204# RUN: llvm-readobj -A %t.o | FileCheck %s --check-prefixes ENUM-HEADER,MSP430X,SMALL-CODE,SMALL-DATA,DONT-CARE-ENUM205 206--- !ELF207FileHeader:208 Class: ELFCLASS32209 Data: ELFDATA2LSB210 Type: ET_REL211 Machine: EM_MSP430212Sections:213 - Name: .MSP430.attributes214 Type: SHT_MSP430_ATTRIBUTES215 ContentArray: [ 0x41, 0x18, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x70, 0x61, 0x62,216 0x69, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00,217 0x04, 0x02, 0x06, 0x01, 0x08, 0x01, 0x0a, 0x03 ]218