[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/22589] aarch64: adrp relocation gets filled with non-zero addres
From: |
nickc at redhat dot com |
Subject: |
[Bug ld/22589] aarch64: adrp relocation gets filled with non-zero address for undefined weak symbol |
Date: |
Fri, 15 Dec 2017 18:33:44 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=22589
Nick Clifton <nickc at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |WAITING
Last reconfirmed| |2017-12-15
CC| |nickc at redhat dot com
Ever confirmed|0 |1
--- Comment #1 from Nick Clifton <nickc at redhat dot com> ---
Hi Julius,
I do not believe that this is a bug:
> 400078: 90000000 adrp x0, 400000 <_start-0x78> (File
> This breaks any code trying to test x0 for zero to see if the weak symbol is
> defined.
Actually the offset stored in the instruction *is* zero. Look at the
binary value of the instruction (0x90000000). But since adrp loads a (pafe
aligned) pc-relative value into its destination register, x0 will never be
set to zero unless the adrp instruction is at address in the first 4K of
memory.
Hence the linker has linked the code correctly and the disassembler is
helpfully showing you that value that *will* be loaded into the x0 register.
Does this make sense to you ?
Cheers
Nick
--
You are receiving this mail because:
You are on the CC list for the bug.