In the part "x64 PIC with data references - an example", it seems that the module is telling the dynamic linker to fill the absolute address of
.got, then the code get that address and read data from that address.
But why does the compiler have to do this, it's a symbol come from itself, why can't just use RIP-relative addressing to access this symbol? Is it because sometimes
.data of the module might be load to a unknown offset to
.text(instead of always loaded next to
I mean, if
address_of(myglob)-address_of(instruction_that_access_myglob) is a certain value, why do we even have to know the absolute address of