ObjFW  Check-in [761d528376]

Overview
Comment:lookup-asm-arm-elf.S: Obfuscate tagged pointers
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tagged-pointers
Files: files | file ages | folders
SHA3-256: 761d5283767d9520fd599ae358dd1a50b3e493efb464b47eb04127ac7e2ac6f3
User & Date: js on 2020-07-12 13:31:03
Other Links: branch diff | manifest | tags
Context
2020-07-12
13:46
lookup-asm-x86*-win*.S: Obfuscate tagged pointers check-in: 4491aefd93 user: js tags: tagged-pointers
13:31
lookup-asm-arm-elf.S: Obfuscate tagged pointers check-in: 761d528376 user: js tags: tagged-pointers
11:50
Obfuscate tagged pointers check-in: 0bfac2b513 user: js tags: tagged-pointers
Changes

Modified src/runtime/lookup-asm/lookup-asm-arm-elf.S from [39632f0f84] to [fae6543de8].

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
85
86
87
88
89
90
	cmp	r2, #0
	beq	\not_found(PLT)

	mov	r0, r2
	bx	lr

.Ltagged_pointer_\name:
	ldr	r3, .Lgot$indirect_.Ltagged_pointer_\name
	ldr	r2, .Lgot$indirect_.Ltagged_pointer_\name+4
	add	r3, pc, r3





	and	r0, r0, #0xE
	lsl	r0, r0, #1


	ldr	r2, [r3, r2]
	ldr	r2, [r2, r0]
	ldr	r2, [r2, #32]

	b	.Lmain_\name
.type \name, %function
.size \name, .-\name

.Lgot$indirect_.Ltagged_pointer_\name:
	.long	_GLOBAL_OFFSET_TABLE_-(.Ltagged_pointer_\name+16)

	.long	objc_tagged_pointer_classes(GOT)
.endm

.macro generate_lookup_super name lookup
\name:
	mov	r2, r0
	ldr	r0, [r0, #0]







<
|
|

>
>
>
>



>
|
|







|
>







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
85
86
87
88
89
90
91
92
93
94
95
	cmp	r2, #0
	beq	\not_found(PLT)

	mov	r0, r2
	bx	lr

.Ltagged_pointer_\name:

	ldr	r2, .Lgot$indirect_.Ltagged_pointer_\name
	add	r2, pc, r2

	ldr	r3, .Lgot$indirect_.Ltagged_pointer_\name+4
	ldr	r3, [r2, r3]
	ldr	r3, [r3]
	eor	r0, r0, r3
	and	r0, r0, #0xE
	lsl	r0, r0, #1

	ldr	r3, .Lgot$indirect_.Ltagged_pointer_\name+8
	ldr	r3, [r2, r3]
	ldr	r2, [r3, r0]
	ldr	r2, [r2, #32]

	b	.Lmain_\name
.type \name, %function
.size \name, .-\name

.Lgot$indirect_.Ltagged_pointer_\name:
	.long	_GLOBAL_OFFSET_TABLE_-(.Ltagged_pointer_\name+12)
	.long	objc_tagged_pointer_secret(GOT)
	.long	objc_tagged_pointer_classes(GOT)
.endm

.macro generate_lookup_super name lookup
\name:
	mov	r2, r0
	ldr	r0, [r0, #0]