aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/MC/ELF/layout-interdependency2.s
blob: 24fafe5429f4e5339502096555f8db563122ff07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
## Contrived .zero directive example, simplified from the Linux kernel use case,
## which requires multiple iterations to converge.
## https://github.com/llvm/llvm-project/issues/100283
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s

# CHECK:       80: jne 0x0 <.text>
# CHECK-EMPTY:

	.text
.Ltmp0:
.Ltmp1:
	cli
	popq	%rdi
text1:
	.zero	(.Ltmp2-.Ltmp3)
	.section	"","ax",@progbits
.Ltmp3:
	movq	$0, %rax
.Ltmp4:
.Ltmp5:
	.section	.discard.intra_function_calls,"ax",@progbits
	.long	.Ltmp5
	.section	"","ax",@progbits
	callq	.Ltmp6
	int3
.Ltmp7:
.Ltmp8:
	.section	.discard.intra_function_calls,"ax",@progbits
	.long	.Ltmp8
	.section	"","ax",@progbits
	callq	.Ltmp6
	int3
.Ltmp6:
	addq	$0, %rsp
	decq	%rax
	jne	.Ltmp4
	lfence
	movq	$-1, %gs:pcpu_hot+6

.Ltmp2:
	.text
text2:

	.zero	(.Ltmp9-.Ltmp10)
	.section	"","ax",@progbits
.Ltmp10:
	jmp	.Ltmp11
.Ltmp9:
	.text
text3:

.Ltmp12:
	.zero	(.Ltmp13-.Ltmp14)
	.section	"","ax",@progbits
.Ltmp14:
	callq	entry_untrain_ret
.Ltmp13:
	.text

	.zero	(.Ltmp15-.Ltmp16)
	.section	"","ax",@progbits
.Ltmp16:
	xorl	%eax, %eax
	btsq	$63, %rax
	movq	%rax, %gs:pcpu_hot+6

.Ltmp15:
	.text

	popq	%r12
	popq	rbp
	jmp	__x86_return_thunk
	movl	936(%rdi), %eax
	cmpl	%gs:x86_spec_ctrl_current, %eax
	je	.Ltmp0
	movl	edx, %edx
	wrmsr
	jmp	.Ltmp0
.Ltmp11:
	movl	$72, %ecx
	jmp	.Ltmp12
	cmpb	$0, kvm_rebooting
	jne	.Ltmp1