Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / llvm-objcopy / ELF / binary-input.test
bloba924a726d1827a328566928ca94414e29cc01c9a
1 # RUN: echo -n abcd > %t.x-txt
2 # Preserve input to verify it is not modified
3 # RUN: cp %t.x-txt %t-copy.txt
4 # RUN: llvm-objcopy -I binary -O elf64-x86-64 %t.x-txt %t.o
5 # RUN: llvm-readobj --sections --symbols %t.o | FileCheck %s
6 # RUN: cmp %t.x-txt %t-copy.txt
8 # CHECK:      Sections [
9 # CHECK-NEXT:   Section {
10 # CHECK-NEXT:     Index: 0
11 # CHECK-NEXT:     Name:  (0)
12 # CHECK-NEXT:     Type: SHT_NULL (0x0)
13 # CHECK-NEXT:     Flags [ (0x0)
14 # CHECK-NEXT:     ]
15 # CHECK-NEXT:     Address: 0x0
16 # CHECK-NEXT:     Offset:
17 # CHECK-NEXT:     Size:
18 # CHECK-NEXT:     Link: 0
19 # CHECK-NEXT:     Info: 0
20 # CHECK-NEXT:     AddressAlignment: 0
21 # CHECK-NEXT:     EntrySize: 0
22 # CHECK-NEXT:   }
23 # CHECK-NEXT:   Section {
24 # CHECK-NEXT:     Index: 1
25 # CHECK-NEXT:     Name: .strtab
26 # CHECK-NEXT:     Type: SHT_STRTAB (0x3)
27 # CHECK-NEXT:     Flags [ (0x0)
28 # CHECK-NEXT:     ]
29 # CHECK-NEXT:     Address: 0x0
30 # CHECK-NEXT:     Offset:
31 # CHECK-NEXT:     Size:
32 # CHECK-NEXT:     Link: 0
33 # CHECK-NEXT:     Info: 0
34 # CHECK-NEXT:     AddressAlignment: 1
35 # CHECK-NEXT:     EntrySize: 0
36 # CHECK-NEXT:   }
37 # CHECK-NEXT:   Section {
38 # CHECK-NEXT:     Index: 2
39 # CHECK-NEXT:     Name: .symtab
40 # CHECK-NEXT:     Type: SHT_SYMTAB (0x2)
41 # CHECK-NEXT:     Flags [ (0x0)
42 # CHECK-NEXT:     ]
43 # CHECK-NEXT:     Address: 0x0
44 # CHECK-NEXT:     Offset:
45 # CHECK-NEXT:     Size:
46 # CHECK-NEXT:     Link: 1
47 # CHECK-NEXT:     Info: 1
48 # CHECK-NEXT:     AddressAlignment: 8
49 # CHECK-NEXT:     EntrySize: 24
50 # CHECK-NEXT:   }
51 # CHECK-NEXT:   Section {
52 # CHECK-NEXT:     Index: 3
53 # CHECK-NEXT:     Name: .data
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: 0x0
60 # CHECK-NEXT:     Offset:
61 # CHECK-NEXT:     Size: 4
62 # CHECK-NEXT:     Link: 0
63 # CHECK-NEXT:     Info: 0
64 # CHECK-NEXT:     AddressAlignment: 1
65 # CHECK-NEXT:     EntrySize: 0
66 # CHECK-NEXT:   }
67 # CHECK-NEXT: ]
69 # Note: the symbol names are derived from the full path (with non-alnum values
70 # replaced with "_"), e.g. "/tmp/a-b.c" should yield
71 # _binary__tmp_a_b_c_{start,end,size}.
72 # Just check for _binary_{{[_a-zA-Z0-9]*}}_x_txt_{start,end,size} to avoid
73 # making assumptions about how this test is run.
75 # CHECK:      Symbols [
76 # CHECK-NEXT:   Symbol {
77 # CHECK-NEXT:     Name:
78 # CHECK-NEXT:     Value: 0x0
79 # CHECK-NEXT:     Size: 0
80 # CHECK-NEXT:     Binding: Local (0x0)
81 # CHECK-NEXT:     Type: None (0x0)
82 # CHECK-NEXT:     Other: 0
83 # CHECK-NEXT:     Section: Undefined (0x0)
84 # CHECK-NEXT:   }
85 # CHECK-NEXT:   Symbol {
86 # CHECK-NEXT:     Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_start
87 # CHECK-NEXT:     Value: 0x0
88 # CHECK-NEXT:     Size: 0
89 # CHECK-NEXT:     Binding: Global (0x1)
90 # CHECK-NEXT:     Type: None (0x0)
91 # CHECK-NEXT:     Other: 0
92 # CHECK-NEXT:     Section: .data
93 # CHECK-NEXT:   }
94 # CHECK-NEXT:   Symbol {
95 # CHECK-NEXT:     Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_end
96 # CHECK-NEXT:     Value: 0x4
97 # CHECK-NEXT:     Size: 0
98 # CHECK-NEXT:     Binding: Global (0x1)
99 # CHECK-NEXT:     Type: None (0x0)
100 # CHECK-NEXT:     Other: 0
101 # CHECK-NEXT:     Section: .data
102 # CHECK-NEXT:   }
103 # CHECK-NEXT:   Symbol {
104 # CHECK-NEXT:     Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_size
105 # CHECK-NEXT:     Value: 0x4
106 # CHECK-NEXT:     Size: 0
107 # CHECK-NEXT:     Binding: Global (0x1)
108 # CHECK-NEXT:     Type: None (0x0)
109 # CHECK-NEXT:     Other: 0
110 # CHECK-NEXT:     Section: Absolute
111 # CHECK-NEXT:   }
112 # CHECK-NEXT: ]
114 ## The alignment can be changed by --set-section-alignment.
115 # RUN: llvm-objcopy -I binary -O elf64-x86-64 --set-section-alignment .data=8 %t.x-txt %t2.o
116 # RUN: llvm-readobj --sections %t2.o | FileCheck --check-prefix=ALIGN %s
118 # ALIGN:      Name: .data
119 # ALIGN:      AddressAlignment:
120 # ALIGN-SAME:                   8{{$}}
122 ## Show that a filename with non-ASCII characters can be handled appropriately.
123 ## The exact encoding of the non-ASCII character will determine what characters
124 ## are used, so don't check for them specifically.
125 # RUN: cp %t.x-txt %t€.x-txt
126 # RUN: llvm-objcopy -I binary -O elf64-x86-64 %t€.x-txt %t3.o
127 # RUN: llvm-readobj --sections --symbols %t3.o | FileCheck %s