Looking into a disassembly code, I saw the instructions like:
adrp x8,l066@PAGE
add x8,x8,l066@PAGEOFF
Are they the offset labels being defined somewhere? And how to find the value of them?
Looking into a disassembly code, I saw the instructions like:
adrp x8,l066@PAGE
add x8,x8,l066@PAGEOFF
Are they the offset labels being defined somewhere? And how to find the value of them?
@page
and @pageoff
are assembler directives to calculate the offset at link time. @page
takes the position independent 4k page offset of the symbol and uses the PC to convert it into an absolute page address. @pageoff
gives the offset into the page that the symbol is located. Together they are able to generate a 64-bit address in a position-independent way.
I've not seen that disassembly style before, but I'd automatically assume that l066
is a label that the disassembler has inferred, for which it is also annotating the appropriate relocations as Margaret says. In other words, it's effectively adrl x8, l066
.