[InstCombine] Signed saturation patterns
[llvm-core.git] / test / tools / llvm-objcopy / ELF / ihex-reader.test
blob885ba13d1b3caf8e0d21adb23ad370fe1d1c9187
1 ## Check section headers when converting from hex to ELF.
2 # RUN: yaml2obj %p/Inputs/ihex-elf-sections.yaml -o %t
3 # RUN: llvm-objcopy -O ihex %t %t.hex
4 # RUN: llvm-objcopy -I ihex -O elf32-i386 %t.hex %t2
5 # RUN: llvm-readobj --section-headers %t2 | FileCheck %s
7 # CHECK:         Index: 1
8 # CHECK-NEXT:    Name: .sec1
9 # CHECK-NEXT:    Type: SHT_PROGBITS (0x1)
10 # CHECK-NEXT:    Flags [ (0x3)
11 # CHECK-NEXT:      SHF_ALLOC (0x2)
12 # CHECK-NEXT:      SHF_WRITE (0x1)
13 # CHECK-NEXT:    ]
14 # CHECK-NEXT:    Address: 0x0
15 # CHECK-NEXT:    Offset: 0x34
16 # CHECK-NEXT:    Size: 21
17 # CHECK-NEXT:    Link: 0
18 # CHECK-NEXT:    Info: 0
19 # CHECK-NEXT:    AddressAlignment: 1
20 # CHECK-NEXT:    EntrySize: 0
22 # CHECK:         Index: 2
23 # CHECK-NEXT:    Name: .sec2
24 # CHECK-NEXT:    Type: SHT_PROGBITS (0x1)
25 # CHECK-NEXT:    Flags [ (0x3)
26 # CHECK-NEXT:      SHF_ALLOC (0x2)
27 # CHECK-NEXT:      SHF_WRITE (0x1)
28 # CHECK-NEXT:    ]
29 # CHECK-NEXT:    Address: 0xFFF8
30 # CHECK-NEXT:    Offset: 0x49
31 # CHECK-NEXT:    Size: 11
32 # CHECK-NEXT:    Link: 0
33 # CHECK-NEXT:    Info: 0
34 # CHECK-NEXT:    AddressAlignment: 1
35 # CHECK-NEXT:    EntrySize: 0
37 # CHECK:         Index: 3
38 # CHECK-NEXT:    Name: .sec3
39 # CHECK-NEXT:    Type: SHT_PROGBITS (0x1)
40 # CHECK-NEXT:    Flags [ (0x3)
41 # CHECK-NEXT:      SHF_ALLOC (0x2)
42 # CHECK-NEXT:      SHF_WRITE (0x1)
43 # CHECK-NEXT:    ]
44 # CHECK-NEXT:    Address: 0x10100
45 # CHECK-NEXT:    Offset: 0x54
46 # CHECK-NEXT:    Size: 4
47 # CHECK-NEXT:    Link: 0
48 # CHECK-NEXT:    Info: 0
49 # CHECK-NEXT:    AddressAlignment: 1
50 # CHECK-NEXT:    EntrySize: 0
52 # CHECK:         Index: 4
53 # CHECK-NEXT:    Name: .sec4
54 # CHECK-NEXT:    Type: SHT_PROGBITS (0x1)
55 # CHECK-NEXT:    Flags [ (0x3)
56 # CHECK-NEXT:      SHF_ALLOC (0x2)
57 # CHECK-NEXT:      SHF_WRITE (0x1)
58 # CHECK-NEXT:    ]
59 # CHECK-NEXT:    Address: 0x10FFF8
60 # CHECK-NEXT:    Offset: 0x58
61 # CHECK-NEXT:    Size: 11
62 # CHECK-NEXT:    Link: 0
63 # CHECK-NEXT:    Info: 0
64 # CHECK-NEXT:    AddressAlignment: 1
65 # CHECK-NEXT:    EntrySize: 0
66   
67 ## Check section contents.
68 # RUN: llvm-objcopy -O binary --only-section=.text %t %t.text
69 # RUN: llvm-objcopy -O binary --only-section=.sec1 %t2 %t2.sec1
70 # RUN: cmp %t.text %t2.sec1
71 # RUN: llvm-objcopy -O binary --only-section=.data %t %t.data
72 # RUN: llvm-objcopy -O binary --only-section=.sec2 %t2 %t2.sec2
73 # RUN: cmp %t.data %t2.sec2
74 # RUN: llvm-objcopy -O binary --only-section=.data2 %t %t.data2
75 # RUN: llvm-objcopy -O binary --only-section=.sec3 %t2 %t2.sec3
76 # RUN: cmp %t.data2 %t2.sec3
77 # RUN: llvm-objcopy -O binary --only-section=.data3 %t %t.data3
78 # RUN: llvm-objcopy -O binary --only-section=.sec4 %t2 %t2.sec4
79 # RUN: cmp %t.data3 %t2.sec4
81 ## Check loading from raw hex file.
82 # RUN: llvm-objcopy -I ihex -O elf32-i386 %p/Inputs/sections.hex %t-raw
83 # RUN: llvm-readobj --section-headers %t-raw | FileCheck %s --check-prefix=RAW
85 # RAW:          Index: 1
86 # RAW-NEXT:     Name: .sec1
87 # RAW-NEXT:     Type: SHT_PROGBITS (0x1)
88 # RAW-NEXT:     Flags [ (0x3)
89 # RAW-NEXT:       SHF_ALLOC (0x2)
90 # RAW-NEXT:       SHF_WRITE (0x1)
91 # RAW-NEXT:     ]
92 # RAW-NEXT:     Address: 0x1FFF8
93 # RAW-NEXT:     Offset: 0x34
94 # RAW-NEXT:     Size: 11
96 # RAW:          Index: 2
97 # RAW-NEXT:     Name: .sec2
98 # RAW-NEXT:     Type: SHT_PROGBITS (0x1)
99 # RAW-NEXT:     Flags [ (0x3)
100 # RAW-NEXT:       SHF_ALLOC (0x2)
101 # RAW-NEXT:       SHF_WRITE (0x1)
102 # RAW-NEXT:     ]
103 # RAW-NEXT:     Address: 0xFFFF8
104 # RAW-NEXT:     Offset: 0x3F
105 # RAW-NEXT:     Size: 11
107 # RAW:          Index: 3
108 # RAW-NEXT:     Name: .sec3
109 # RAW-NEXT:     Type: SHT_PROGBITS (0x1)
110 # RAW-NEXT:     Flags [ (0x3)
111 # RAW-NEXT:       SHF_ALLOC (0x2)
112 # RAW-NEXT:       SHF_WRITE (0x1)
113 # RAW-NEXT:     ]
114 # RAW-NEXT:     Address: 0x1FFFF8
115 # RAW-NEXT:     Offset: 0x4A
116 # RAW-NEXT:     Size: 11
118 ## Check section contents.
119 # RUN: llvm-objcopy -O ihex --only-section=.sec1 %t-raw - | FileCheck %s --check-prefix=RAW-SEC1
121 # RAW-SEC1:         :020000021000EC
122 # RAW-SEC1-NEXT:    :08FFF8000001020304050607E5
123 # RAW-SEC1-NEXT:    :020000022000DC
124 # RAW-SEC1-NEXT:    :0300000008090AE2
126 # RUN: llvm-objcopy -O ihex --only-section=.sec2 %t-raw - | FileCheck %s --check-prefix=RAW-SEC2
128 # RAW-SEC2:         :02000002F0000C
129 # RAW-SEC2-NEXT:    :08FFF800303132333435363765
130 # RAW-SEC2-NEXT:    :020000020000FC
131 # RAW-SEC2-NEXT:    :020000040010EA
132 # RAW-SEC2-NEXT:    :030000003839404C
134 # RUN: llvm-objcopy -O ihex --only-section=.sec3 %t-raw - | FileCheck %s --check-prefix=RAW-SEC3
136 # RAW-SEC3:         :02000004001FDB
137 # RAW-SEC3-NEXT:    :08FFF8004041424344454647E5
138 # RAW-SEC3-NEXT:    :020000040020DA
139 # RAW-SEC3-NEXT:    :030000004849501C
141 ## Check that line is trimmed from whitespace.
142 # RUN: echo "   :0100000001FE   " | llvm-objcopy -I ihex -O elf64-x86-64 - - \
143 # RUN: | llvm-objcopy -O ihex - - | FileCheck %s --check-prefix=SPACES
145 # SPACES:       :0100000001FE
146 # SPACES-NEXT:  :00000001FF
148 ## Check for various parsing errors.
149 ## 1. String too short.
150 # RUN: echo "01000000FF" | not llvm-objcopy -I ihex -O elf32-i386  - - 2>&1 | FileCheck %s --check-prefix=BAD_LENGTH
152 # BAD_LENGTH: error: '{{.*}}': line 1: line is too short: 10 chars
154 ## 2. Missing ':'.
155 # RUN: echo "0100000000FF" | not llvm-objcopy -I ihex -O elf32-i386  - - 2>&1 | FileCheck %s --check-prefix=MISSING_COLON
157 # MISSING_COLON: error: '{{.*}}': line 1: missing ':' in the beginning of line
159 ## 3. Invalid charatcer.
160 # RUN: echo ":01000000xF" |  not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_CHAR
162 # BAD_CHAR: error: '{{.*}}': line 1: invalid character at position 10
164 ## 4. Incorrect string length.
165 # RUN: echo ":010000000000000F" | not llvm-objcopy -I ihex -O elf32-i386  - - 2>&1 | FileCheck %s --check-prefix=BAD_LENGTH2
167 # BAD_LENGTH2: error: '{{.*}}': line 1: invalid line length 17 (should be 13)
169 ## 5. Invalid type (06).
170 # RUN: echo ":00000006FA" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_TYPE
172 # BAD_TYPE: error: '{{.*}}': line 1: unknown record type: 6
174 ## 6. Invalid checksum.
175 # RUN: echo ":00000001FA" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_CKSUM
177 # BAD_CKSUM: error: '{{.*}}': line 1: incorrect checksum
179 ## 7. Zero data length.
180 # RUN: echo ":00010000FF" | not llvm-objcopy -I ihex - - 2>&1 | FileCheck %s --check-prefix=ZERO_DATA_LEN
182 # ZERO_DATA_LEN: error: '{{.*}}': line 1: zero data length is not allowed for data records
184 ## 8. Bad data length for '02' (SegmentAddr) record.
185 # RUN: echo ":03000002000000FB" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_SEGADDR_LEN
187 # BAD_SEGADDR_LEN: error: '{{.*}}': line 1: segment address data should be 2 bytes in size
189 ## 9. Bad data length for '03' (StartAddr80x86) record.
190 # RUN: echo ":03000003000000FA" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_STARTADDR_LEN
192 ## 10. Bad data length for '05' (StartAddr) record.
193 # RUN: echo ":03000005000000F8" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_STARTADDR_LEN
195 # BAD_STARTADDR_LEN: error: '{{.*}}': line 1: start address data should be 4 bytes in size
197 ## 11. Address value for 'StartAddr80x86' is greater then 0xFFFFFU.
198 # RUN: echo ":04000003FFFFFFFFFD" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_STARTADDR
200 # BAD_STARTADDR:  error: '{{.*}}': line 1: start address exceeds 20 bit for 80x86
202 ## 12. Invalid extended address data size.
203 # RUN: echo ":04000004FFFFFFFFFC" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=BAD_EXTADDR_LEN
205 # BAD_EXTADDR_LEN: error: '{{.*}}': line 1: extended address data should be 2 bytes in size
207 ## 13. No sections in the hex file.
208 ## a) try empty file:
209 # RUN: echo "" | not llvm-objcopy -I ihex -O elf32-i386 - - 2>&1 | FileCheck %s --check-prefix=NO_SECTIONS
210 ## b) EOF record should cancel processing further records. Not having any section data
211 ##    before EOF should trigger an error.
212 # RUN: echo ":00000001FF" > %t-bad14.hex
213 # RUN: echo ":0100000001FE" >> %t-bad14.hex
214 # RUN: not llvm-objcopy -I ihex %t-bad14.hex %t-none 2>&1 | FileCheck %s --check-prefix=NO_SECTIONS
216 # NO_SECTIONS: error: '{{.*}}': no sections