[cfe-dev] AArch64 ASM / Custom Sections and Common Variables
Joel Winarske via cfe-dev
cfe-dev at lists.llvm.org
Mon Nov 11 10:40:59 PST 2019
Thanks Tim!
On Mon, Nov 11, 2019, 6:37 AM Tim Northover <t.p.northover at gmail.com> wrote:
> Hi Joel,
>
> On Sat, 9 Nov 2019 at 18:26, Joel Winarske via cfe-dev
> <cfe-dev at lists.llvm.org> wrote:
> > This generates "unsupported relocation type:
> fixup_aarch64_ldr_pcrel_imm19". If I comment out the first ldr line, it
> builds, as FooValue is part of .text.foo2.
>
> To reference a symbol across sections like this, you'd need to add a
> relocation to the object file, but some formats (MachO I know) have a
> ridiculously small number of permitted relocations and don't have room
> for for pc-relative load relocations. I think you're probably hitting
> that issue.
>
> You've got two options:
>
> 1. Reference FooValue in a way that does have relocations. For example
> (on MachO, I'm afraid I don't know the syntax for COFF, and it should
> just be working anyway for ELF):
>
> adrp x0, FooValue at PAGE
> ldr w0, [x0, FooValue at PAGEOFFSET]
>
> 2. Use a local symbol with a different name each time (starting with L
> on MachO), and defined within the section that references it
> (actually, probably before the next global symbol if you're using
> .subsections_via_symbols, which you should be):
>
> .section .text.foo1
> foo1:
> ldr w0, LFooValue.foo1
> ret
> LFooValue.foo1:
> .word 0
>
> .section .text.foo2
> foo2:
> ldr w0, LFooValue.foo2
> ret
> LFooValue.foo2:
> .word 0
>
> Cheers.
>
> Tim.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20191111/90111abc/attachment.html>
More information about the cfe-dev
mailing list