On Fri, Oct 27, 2023 at 2:47 PM Ard Biesheuvel <a...@kernel.org> wrote: > > Hello all, > > Apologies for the late response. > > On Fri, 27 Oct 2023 at 14:44, Jake Garver via groups.io > <jake=nvidia....@groups.io> wrote: > > > > Thanks for your response, Pedro. > > > > I chased this as a toolchain bug originally, but concluded that the ADR > > indeed works before GenFw rewrites it. But I see your point regarding the > > relocation statement. > > > > As requested, below is the disassembled function along with relocations. > > This was generated from the dll using "aarch64-linux-gnu-objdump -r -D". > > The ADR in question is at 2ffc. > > > > Can you double check the object file? I suspect this is a linker > relaxation not a compiler issue. > > > This code was generated by the current version of the GCC 10.x toolchain on > > Ubuntu20. So, if we're concluding this is a toolchain issue, then it's > > with a fairly "stock" toolchain. > > > > 0000000000002fec <fdt_path_offset>: > > 2fec: a9b97bfd stp x29, x30, [sp, #-112]! > > 2ff0: 910003fd mov x29, sp > > 2ff4: a90363f7 stp x23, x24, [sp, #48] > > 2ff8: aa0003f8 mov x24, x0 > > 2ffc: 10020020 adr x0, 7000 <_cont+0xe98> > > 2ffc: R_AARCH64_ADR_GOT_PAGE __stack_chk_guard > > The nasty thing with relying on --emit-relocs is that they get out of > sync. R_AARCH64_ADR_GOT_PAGE is documented as applying to ADRP only, > so this code is non-compliant one way or the other.
I was narrowing it down to this, but _ADR_GOT_PAGE does not seem to be relaxable as ADRP -> ADR, per the ABI spec (see "Large GOT Indirection". "PC-relative addressing" only applies to _ADR_PREL_PG_HI21...) Maybe it's just not a documented relaxation? Or does it relax as _ADR_GOT_PAGE -> _ADR_PREL_PG_HI21 -> _ADR_PREL_LO21 without updating internal relocation info? > > There are other relaxations that also confuse GenFw when the static > relocs don't get updated accordingly. Wonderful that you can confirm this is probably a linker --emit-relocs issue. So, if this proves to be the case: Acked-by: Pedro Falcato <pedro.falc...@gmail.com> but please rewrite the commit message so that it's clear that this is an --emit-relocs toolchain bug. -- Pedro -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110209): https://edk2.groups.io/g/devel/message/110209 Mute This Topic: https://groups.io/mt/102202314/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-