1 .type foo, %function 2 .globl foo 3foo: 4 // GOT load 5 adrp x1, :got:stderr 6 ldr x0, [x1, :got_lo12:stderr] 7 8 // GOT load to x0 9 adrp x0, :got:stderr 10 ldr x1, [x0, :got_lo12:stderr] 11 12 // GOT load with no register move 13 adrp x0, :got:stderr 14 ldr x0, [x0, :got_lo12:stderr] 15 16 // Address load 17 adrp x0, .Llocal_data 18 add x1, x0, :lo12:.Llocal_data 19 20 // Address of local symbol with offset 21 adrp x10, .Llocal_data2+16 22 add x11, x10, :lo12:.Llocal_data2+16 23 24 // Address load with no-op add instruction 25 adrp x0, .Llocal_data 26 add x0, x0, :lo12:.Llocal_data 27 28 // armcap 29 adrp x1, OPENSSL_armcap_P 30 ldr w2, [x1, :lo12:OPENSSL_armcap_P] 31 32 // armcap to w0 33 adrp x0, OPENSSL_armcap_P 34 ldr w1, [x1, :lo12:OPENSSL_armcap_P] 35 36 // Load from local symbol 37 adrp x10, .Llocal_data2 38 ldr q0, [x10, :lo12:.Llocal_data2] 39 40 bl local_function 41 42 bl remote_function 43 44 bl bss_symbol_bss_get 45 46local_function: 47 48// BSS data 49.type bss_symbol,@object 50.section .bss.bss_symbol,"aw",@nobits 51bss_symbol: 52.word 0 53.size bss_symbol, 4 54