1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -h -S -r --symbols - | FileCheck %s
2
3        .text
4	.globl	main
5	.align	16, 0x90
6	.type	main,@function
7main:                                   # @main
8# %bb.0:
9	subq	$8, %rsp
10	movl	$.L.str1, %edi
11	callq	puts
12	movl	$.L.str2, %edi
13	callq	puts
14	xorl	%eax, %eax
15	addq	$8, %rsp
16    call foo@GOTPCREL
17    ja foo
18    jae foo
19    jb foo
20    jbe foo
21    jc foo
22    je foo
23    jz foo
24    jg foo
25    jge foo
26    jl foo
27    jle foo
28    jna foo
29    jnae foo
30    jnb foo
31    jnbe foo
32    jnc foo
33    jne foo
34    jng foo
35    jnge foo
36    jnl foo
37    jnle foo
38    jno foo
39    jnp foo
40    jns foo
41    jnz foo
42    jo foo
43    jp foo
44    jpe foo
45    jpo foo
46    js foo
47    jz foo
48	ret
49.Ltmp0:
50	.size	main, .Ltmp0-main
51
52	.type	.L.str1,@object         # @.str1
53	.section	.rodata.str1.1,"aMS",@progbits,1
54.L.str1:
55	.asciz	 "Hello"
56	.size	.L.str1, 6
57
58	.type	.L.str2,@object         # @.str2
59.L.str2:
60	.asciz	 "World!"
61	.size	.L.str2, 7
62
63	.section	.note.GNU-stack,"",@progbits
64
65// CHECK: ElfHeader {
66// CHECK:   Class: 64-bit
67// CHECK:   DataEncoding: LittleEndian
68// CHECK:   FileVersion: 1
69// CHECK: }
70// CHECK: Sections [
71// CHECK:   Section {
72// CHECK:     Index: 0
73// CHECK:     Name: (0)
74
75// CHECK:     Name: .text
76
77// CHECK:     Name: .rela.text
78
79// CHECK:      Relocations [
80// CHECK:        Section {{.*}} .rela.text {
81// CHECK-NEXT:     0x5  R_X86_64_32   .rodata.str1.1 0x0
82// CHECK-NEXT:     0xA  R_X86_64_PLT32 puts           0xFFFFFFFFFFFFFFFC
83// CHECK-NEXT:     0xF  R_X86_64_32   .rodata.str1.1 0x6
84// CHECK-NEXT:     0x14 R_X86_64_PLT32 puts           0xFFFFFFFFFFFFFFFC
85// CHECK-NEXT:     0x1F R_X86_64_GOTPCREL foo 0xFFFFFFFFFFFFFFFC
86// CHECK-NEXT:     0x25 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
87// CHECK-NEXT:     0x2B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
88// CHECK-NEXT:     0x31 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
89// CHECK-NEXT:     0x37 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
90// CHECK-NEXT:     0x3D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
91// CHECK-NEXT:     0x43 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
92// CHECK-NEXT:     0x49 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
93// CHECK-NEXT:     0x4F R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
94// CHECK-NEXT:     0x55 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
95// CHECK-NEXT:     0x5B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
96// CHECK-NEXT:     0x61 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
97// CHECK-NEXT:     0x67 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
98// CHECK-NEXT:     0x6D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
99// CHECK-NEXT:     0x73 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
100// CHECK-NEXT:     0x79 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
101// CHECK-NEXT:     0x7F R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
102// CHECK-NEXT:     0x85 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
103// CHECK-NEXT:     0x8B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
104// CHECK-NEXT:     0x91 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
105// CHECK-NEXT:     0x97 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
106// CHECK-NEXT:     0x9D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
107// CHECK-NEXT:     0xA3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
108// CHECK-NEXT:     0xA9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
109// CHECK-NEXT:     0xAF R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
110// CHECK-NEXT:     0xB5 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
111// CHECK-NEXT:     0xBB R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
112// CHECK-NEXT:     0xC1 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
113// CHECK-NEXT:     0xC7 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
114// CHECK-NEXT:     0xCD R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
115// CHECK-NEXT:     0xD3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
116// CHECK-NEXT:     0xD9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
117// CHECK-NEXT:   }
118// CHECK-NEXT: ]
119
120// CHECK:   Symbol {
121// CHECK:     Binding: Local
122// CHECK:     Type: Section
123
124// CHECK:   Symbol {
125// CHECK:     Name: main
126// CHECK:     Binding: Global
127// CHECK:     Type: Function
128// CHECK:  }
129
130// CHECK:   Symbol {
131// CHECK:     Name: puts
132// CHECK:     Binding: Global
133// CHECK:     Type: None
134// CHECK:  }
135