blob: ff1d381c3fa558d6dd53f002f3ecd48225ce6676 [file] [log] [blame]
Jordan Rupprechtcf676332018-08-17 18:51:11 +00001# 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 -B i386: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
7
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: 1
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: ]
68
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.
74
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: ]