1*6e4dc6f2SAlexander Shaposhnikov# RUN: echo -n abcd > %t.x-txt
2*6e4dc6f2SAlexander Shaposhnikov# Preserve input to verify it is not modified
3*6e4dc6f2SAlexander Shaposhnikov# RUN: cp %t.x-txt %t-copy.txt
4*6e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy -I binary -B i386:x86-64 %t.x-txt %t.o
5*6e4dc6f2SAlexander Shaposhnikov# RUN: llvm-readobj -sections -symbols %t.o | FileCheck %s
6*6e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t.x-txt %t-copy.txt
7*6e4dc6f2SAlexander Shaposhnikov
8*6e4dc6f2SAlexander Shaposhnikov# CHECK:      Sections [
9*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Section {
10*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Index: 0
11*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name:  (0)
12*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: SHT_NULL (0x0)
13*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Flags [ (0x0)
14*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     ]
15*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Address: 0x0
16*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Offset:
17*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size:
18*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Link: 0
19*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Info: 0
20*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     AddressAlignment: 0
21*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     EntrySize: 0
22*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
23*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Section {
24*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Index: 1
25*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name: .strtab
26*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: SHT_STRTAB (0x3)
27*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Flags [ (0x0)
28*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     ]
29*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Address: 0x0
30*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Offset:
31*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size:
32*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Link: 0
33*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Info: 0
34*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     AddressAlignment: 1
35*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     EntrySize: 0
36*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
37*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Section {
38*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Index: 2
39*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name: .symtab
40*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: SHT_SYMTAB (0x2)
41*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Flags [ (0x0)
42*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     ]
43*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Address: 0x0
44*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Offset:
45*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size:
46*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Link: 1
47*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Info: 1
48*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     AddressAlignment: 1
49*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     EntrySize: 24
50*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
51*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Section {
52*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Index: 3
53*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name: .data
54*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: SHT_PROGBITS (0x1)
55*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Flags [ (0x3)
56*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:       SHF_ALLOC (0x2)
57*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:       SHF_WRITE (0x1)
58*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     ]
59*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Address: 0x0
60*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Offset:
61*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size: 4
62*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Link: 0
63*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Info: 0
64*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     AddressAlignment: 1
65*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     EntrySize: 0
66*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
67*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ]
68*6e4dc6f2SAlexander Shaposhnikov
69*6e4dc6f2SAlexander Shaposhnikov# Note: the symbol names are derived from the full path (with non-alnum values
70*6e4dc6f2SAlexander Shaposhnikov# replaced with "_"), e.g. "/tmp/a-b.c" should yield
71*6e4dc6f2SAlexander Shaposhnikov# _binary__tmp_a_b_c_{start,end,size}.
72*6e4dc6f2SAlexander Shaposhnikov# Just check for _binary_{{[_a-zA-Z0-9]*}}_x_txt_{start,end,size} to avoid
73*6e4dc6f2SAlexander Shaposhnikov# making assumptions about how this test is run.
74*6e4dc6f2SAlexander Shaposhnikov
75*6e4dc6f2SAlexander Shaposhnikov# CHECK:      Symbols [
76*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Symbol {
77*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name:
78*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Value: 0x0
79*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size: 0
80*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Binding: Local (0x0)
81*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: None (0x0)
82*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Other: 0
83*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Section: Undefined (0x0)
84*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
85*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Symbol {
86*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_start
87*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Value: 0x0
88*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size: 0
89*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Binding: Global (0x1)
90*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: None (0x0)
91*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Other: 0
92*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Section: .data
93*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
94*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Symbol {
95*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_end
96*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Value: 0x4
97*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size: 0
98*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Binding: Global (0x1)
99*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: None (0x0)
100*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Other: 0
101*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Section: .data
102*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
103*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   Symbol {
104*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_size
105*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Value: 0x4
106*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Size: 0
107*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Binding: Global (0x1)
108*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Type: None (0x0)
109*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Other: 0
110*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:     Section: Absolute
111*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   }
112*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ]
113