• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.text
2BORINGSSL_bcm_text_start:
3	.type foo, @function
4	.globl foo
5.Lfoo_local_target:
6foo:
7	movq $0, %rax
8	ret
9
10.Lbar_local_target:
11bar:
12	# References to globals must be rewritten to their local targets.
13# WAS call foo
14	call	.Lfoo_local_target
15# WAS jmp foo
16	jmp	.Lfoo_local_target
17# WAS jbe foo
18	jbe	.Lfoo_local_target
19# WAS jne foo
20	jne	.Lfoo_local_target
21
22	# Jumps to PLT symbols are rewritten through redirectors.
23# WAS call memcpy@PLT
24	call	bcm_redirector_memcpy
25# WAS jmp memcpy@PLT
26	jmp	bcm_redirector_memcpy
27# WAS jbe memcpy@PLT
28	jbe	bcm_redirector_memcpy
29
30	# Jumps to local PLT symbols use their local targets.
31# WAS call foo@PLT
32	call	.Lfoo_local_target
33# WAS jmp foo@PLT
34	jmp	.Lfoo_local_target
35# WAS jbe foo@PLT
36	jbe	.Lfoo_local_target
37
38	# Synthesized symbols are treated as local ones.
39# WAS call OPENSSL_ia32cap_get@PLT
40	call	OPENSSL_ia32cap_get
41
42	# References to local labels are left as-is in the first file.
43.Llocal_label:
44
45	jbe .Llocal_label
46	leaq .Llocal_label+2048(%rip), %r14
47	leaq .Llocal_label+2048+1024(%rip), %r14
48
49# WAS .section .rodata
50.text
51.L1:
52
53	.quad 42
54.L2:
55
56	.quad .L2-.L1
57
58	# Local labels and their jumps are left alone.
59	.text
60	jmp 1f
611:
62
63	jmp 1b
64	# References to local labels are rewrittenn in subsequent files.
65.Llocal_label_BCM_1:
66
67# WAS jbe .Llocal_label
68	jbe	.Llocal_label_BCM_1
69# WAS leaq .Llocal_label+2048(%rip), %r14
70	leaq	.Llocal_label_BCM_1+2048(%rip), %r14
71# WAS leaq .Llocal_label+2048+1024(%rip), %r14
72	leaq	.Llocal_label_BCM_1+2048+1024(%rip), %r14
73
74# WAS .section .rodata
75.text
76.L1_BCM_1:
77
78	.quad 42
79.L2_BCM_1:
80
81# WAS .quad .L2-.L1
82	.quad	.L2_BCM_1-.L1_BCM_1
83
84.text
85BORINGSSL_bcm_text_end:
86.type bcm_redirector_memcpy, @function
87bcm_redirector_memcpy:
88	jmp	memcpy@PLT
89.type OPENSSL_ia32cap_get, @function
90OPENSSL_ia32cap_get:
91	leaq OPENSSL_ia32cap_P(%rip), %rax
92	ret
93.extern OPENSSL_ia32cap_P
94.type OPENSSL_ia32cap_addr_delta, @object
95.size OPENSSL_ia32cap_addr_delta, 8
96OPENSSL_ia32cap_addr_delta:
97.quad OPENSSL_ia32cap_P-OPENSSL_ia32cap_addr_delta
98.type BORINGSSL_bcm_text_hash, @object
99.size BORINGSSL_bcm_text_hash, 64
100BORINGSSL_bcm_text_hash:
101.byte 0xae
102.byte 0x2c
103.byte 0xea
104.byte 0x2a
105.byte 0xbd
106.byte 0xa6
107.byte 0xf3
108.byte 0xec
109.byte 0x97
110.byte 0x7f
111.byte 0x9b
112.byte 0xf6
113.byte 0x94
114.byte 0x9a
115.byte 0xfc
116.byte 0x83
117.byte 0x68
118.byte 0x27
119.byte 0xcb
120.byte 0xa0
121.byte 0xa0
122.byte 0x9f
123.byte 0x6b
124.byte 0x6f
125.byte 0xde
126.byte 0x52
127.byte 0xcd
128.byte 0xe2
129.byte 0xcd
130.byte 0xff
131.byte 0x31
132.byte 0x80
133.byte 0xa2
134.byte 0xd4
135.byte 0xc3
136.byte 0x66
137.byte 0xf
138.byte 0xc2
139.byte 0x6a
140.byte 0x7b
141.byte 0xf4
142.byte 0xbe
143.byte 0x39
144.byte 0xa2
145.byte 0xd7
146.byte 0x25
147.byte 0xdb
148.byte 0x21
149.byte 0x98
150.byte 0xe9
151.byte 0xd5
152.byte 0x53
153.byte 0xbf
154.byte 0x5c
155.byte 0x32
156.byte 0x6
157.byte 0x83
158.byte 0x34
159.byte 0xc
160.byte 0x65
161.byte 0x89
162.byte 0x52
163.byte 0xbd
164.byte 0x1f
165