I take back my bug report of 28 July
Jacob Navia <[email protected]> Fri, 30 Jul 2021 18:03:45 +0200
| Newsgroups | gmane.comp.gnu.utils.bugs |
|---|---|
| Message-ID | <[email protected]> |
Dear friends I sent you a bug report (attached) 28 July, but it is NOT a bug in your = software =C2=AB as =C2=AB . Apparently the pool must be aligned to a 8 = byte boundary to be loaded into a floating point register. Sorry for this noise. Attached the =C2=AB bug =C2=BB report I sent you = on July 28th =E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2= =80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80= =94=E2=80=94=E2=80=94 Dear Friends: The instruction: ldr d15,=3D0x401acccccccc will be assembled without any warnings. The pool will be correctly = constructed and linked, and the correct value is stored in the pool = after the current function. The value 0x401acccccccc corresponds to 6.7 At run-time it will not work, the register d15 is loaded with some value = that doesn=E2=80=99t correspond at all to the given one. If I write however ldr x15,=3D0x401acccccccc The 64 bit value value will be correctly loaded into x15.Both pools are = exactly the same. The clang compiler does NOT assemble that instruction and emits an = error: error: Immediate too large for register If I change it to x15, both gas and clang agree, and the result is = correct. Note that the address of the pool appears correct under gdb = disassembler: it is just at the position of the .ltorg pseudo = instruction. I verified this by displaying the contents of the pool. as -v GNU assembler version 2.28 (aarch64-linux-gnu) using BFD version (GNU = Binutils for Debian) 2.28 uname -a Linux rock64 4.4.152-rockchip64 #1 SMP Sun Aug 26 14:40:54 CEST 2018 = aarch64 GNU/Linux Thanks in advance for your help. jacob navia=