Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

@ we can relax local and non-weak globals for non-shared links

	.arch	armv5te
	.text
	.arm

	.p2align 2
foo:
@tlscall global, manually relaxed to IE
	ldr	r0, 1f
2:	ldr	r0, [pc, r0]
	nop
	.p2align 2
1:	.word	gd1(gottpoff) + (. - 2b - 8)
	
	.p2align 2
@tlscall global, should relax to IE
	ldr	r0, 1f
2:	blx	gd1(tlscall)
	nop
	.p2align 2
1:	.word	gd1(tlsdesc) + (. - 2b)

	.p2align 2
@tlscall local, manually relaxed to LE
	ldr	r0, 1f
	nop
	nop
	.p2align 2
1:	.word	ld1(tpoff)

	.p2align 2
@tlscall local, should relax to LE
	ldr	r0, 1f
2:	blx	ld1(tlscall)
	nop
	.p2align 2
1:	.word	ld1(tlsdesc) + (. - 2b)

	.p2align 2
@open coded global, manually relaxed to IE
	ldr	r0, 1f
2:
	add	r0, pc, r0
	ldr	r1, [r0]
	mov	r0, r1
	nop
	.p2align 2
1:	.word	gd1(gottpoff) + (. - 2b - 8)

	.p2align 2
@open coded global, should relax to IE
	ldr	r0, 1f
2:
.tlsdescseq gd1
	add	r0, pc, r0
.tlsdescseq gd1
	ldr	r1, [r0,#4]
.tlsdescseq gd1
	blx	r1
	nop
	.p2align 2
1:	.word	gd1(tlsdesc) + (. - 2b)

	.p2align 2
@open coded local, manually relaxed to LE
	ldr	r0, 1f
2:
	nop
	nop
	nop
	nop
	.p2align 2
1:	.word	ld1(tpoff)
	
	.p2align 2
@open coded local, should relax to LE
	ldr	r0, 1f
2:
.tlsdescseq ld1
	add	r0, pc, r0
.tlsdescseq ld1
	ldr	r1, [r0,#4]
.tlsdescseq ld1
	blx	r1
	nop
	.p2align 2
1:	.word	ld1(tlsdesc) + (. - 2b)


	.thumb
	.p2align 1
bar:	
@tlscall global, manually relaxed to IE
	ldr	r0, 1f
2:	add	r0, pc, r0
	ldr	r0, [r0]
	nop
	.p2align 2
1:	.word	gd1(gottpoff) + (. - 2b - 4)
	
	.p2align 1
@tlscall global, should relax to IE
	ldr	r0, 1f
2:	blx	gd1(tlscall)
	nop
	.p2align 2
1:	.word	gd1(tlsdesc) + (. - 2b + 1)

	.p2align 1
@tlscall global, should relax to IE
	ldr	r0, 1f
2:	blx	r1(tlscall)
	nop
	.p2align 2
1:	.word	r1(tlsdesc) + (. - 2b + 1)

	.p2align 1
@tlscall local, manually relaxed to LE
	ldr	r0, 1f
	nop
	nop
	.p2align 2
1:	.word	ld1(tpoff)

	.p2align 1
@tlscall local, should relax to LE
	ldr	r0, 1f
2:	blx	ld1(tlscall)
	nop
	.p2align 2
1:	.word	ld1(tlsdesc) + (. - 2b + 1)

	.p2align 1
@tlscall local, should relax to LE
	ldr	r0, 1f
2:	blx	r0(tlscall)
	nop
	.p2align 2
1:	.word	r0(tlsdesc) + (. - 2b + 1)

	.p2align 1
@open coded global, manually relaxed to IE
	ldr	r0, 1f
2:
	add	r0, pc
	ldr	r1, [r0]
	mov	r0, r1
	nop
	.p2align 2
1:	.word	gd1(gottpoff) + (. - 2b - 4)

	.p2align 1
@open coded global, should relax to IE
	ldr	r0, 1f
2:
.tlsdescseq gd1
	add	r0, pc
.tlsdescseq gd1
	ldr	r1, [r0,#4]
.tlsdescseq gd1
	blx	r1
	nop
	.p2align 2
1:	.word	gd1(tlsdesc) + (. - 2b + 1)

	.p2align 1
@open coded local, manually relaxed to LE
	ldr	r0, 1f
2:
	nop
	nop
	nop
	nop
	.p2align 2
1:	.word	ld1(tpoff)
	
	.p2align 1
@open coded local, should relax to LE
	ldr	r0, 1f
2:
.tlsdescseq ld1
	add	r0, pc
.tlsdescseq ld1
	ldr	r1, [r0,#4]
.tlsdescseq ld1
	blx	r1
	nop
	.p2align 2
1:	.word	ld1(tlsdesc) + (. - 2b + 1)

	.section .tdata,"awT"
	.global	gd1
gd1:	.space 4
ld1:	.space 4
	.globl r1
r1:	.space 4
r0:	.space 4